Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Алфавит языка Турбо Паскаль

Большинство программ создаются для решения какой-либо задачи. В процессе ее решения на ПК необходимо: ввести данные, указать способ их обработки, задать способ вывода полученных результатов. Поэтому нужно знать следующее:

  • Как ввести информацию в память (ввод).

  • Как хранить информацию в памяти (данные).

  • Как указать правильные команды для обработки данных (операции).

  • Как передать данные из программы пользователю (вывод).

Необходимо также уметь упорядочивать команды так, чтобы:

  • некоторые из них выполнялись только в случае, если соблюдается некоторое условие или ряд условий (условное выполнение);

  • другие выполнялись повторно некоторое число раз (циклы);

  • третьи выделялись в отдельные части, которые могут быть неоднократно выполнены в разных местах программы (подпрограммы).

Таким образом, нужно уметь использовать семь основных элементов программирования: ввод, данные, операции, вывод, условное выполнение, циклы и подпрограммы и на их основе строить программы.

Это список не является полным, однако, он содержит те элементы, которые присущи обычно всем программам. Многие языки программирования имеют еще и дополнительные средства, в том числе и Паскаль.

Основные файлы пакета Турбо Паскаль:

  • Turbo.exe – интегрированная среда программирования;

  • Turbo.hlp – файл, содержащий данные для оперативной подсказки;

  • Turbo.tp – файл конфигурационной системы;

  • Turbo.tpl – библиотека стандартных модулей Турбо Паскаля.

Для работы в графическом режиме необходимы Graph.tru – модуль с графическими процедурами и функциями Турбо Паскаля, несколько файлов с расширением *.BGI – драйверы различных типов видеосистем ПК, несколько файлов с расширением *.CHR, содержащих векторные шрифты.

После загрузки системы экран разделен на три части: основное (или рабочее) окно, главное меню и строка, в которой указывается назначение основных функциональных клавиш. Переход из основного окна в главное меню и обратно осуществляется посредством клавиши F10.

В рабочем окне осуществляется набор текста программы, запуск же происходит следующим образом: выход в меню, выбор пункта Run – Run.

Для того чтобы сохранить программу, необходимо: выйти в меню, выбрать File – Save (Save as …), в появившемся окне ввести имя файла и нажать клавишу Enter.

Выход из системы программирования: выход в меню, пункт File – Exit.

1.1. Алфавит и словарь языка Паскаль

Язык – совокупность символов, соглашений и правил, используемых для общения. При записи алгоритма решения задачи на языке программирования необходимо четко знать правила написания и использования языковых единиц. Основой любого языка является алфавит (набор знаков, состоящий из букв, десятичных и шестнадцатеричных цифр, специальных символов).

Алфавит Паскаля составляют:

  • прописные и строчные буквы латинского алфавита: A, B, C…Y, Z, a, b, c,…y, z ;

  • десятичные цифры: 0, 1, 2,…9;

  • специальные символы: + - * / > < = ; # ‘ , . : {} [] ( )

  • комбинации специальных символов , которые нельзя разделять пробелами, если они используются как знаки операций: «:=», «..», «<>», «<=», «>=», «{}».

  • Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями. Ими могут быть пробел, комментарий или символ конца строки. Словарь Паскаля можно разделить на три группы слов: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.

Зарезервированные слова (см таб.1) имеют фиксированное написание и навсегда определенный смысл. Они не могут изменяться программистом и их нельзя использовать в качестве имен для обозначения величин.

Идентификатор – имя (identification – установление соответствия объекта некоторому набору символов). Для обозначения определенных разработчиками языка функций, констант и т.д. служат стандартные идентификаторы, например Sqr, Sqrt и т.д. В этом примере Sqr вызывает функцию, которая возводит в квадрат данное число, а Sqrt – корень квадратный из заданного числа. Пользователь может переопределить любой стандартный идентификатор, но чаще всего это приводит к ошибкам, поэтому на практике их используют без изменения. Идентификаторы пользователя – это те имена, которые дает сам программист. При записи программ нужно соблюдать общие правила написания идентификаторов:

  • Идентификатор начинается только с буквы (исключение составляют специальные идентификаторы меток).

  • Идентификатор может состоять из букв, цифр и знака подчеркивания.

  • Максимальная длина – 127 символов.

  • При написании идентификаторов можно использовать прописные и строчные буквы.

  • Между двумя идентификаторами должен стоять хотя бы один пробел.

Некоторые зарезервированные слова версии Турбо Паскаль

Absolute | Абсолютный | Library | Библиотека
And | Логическое И | Mod | Остаток от деления
Array | Массив | Not | Логическое НЕ
Begin | Начало блока | Or | Логическое ИЛИ
Case | Вариант | Of | Из
Const | Константа | Object | Объект
Div | Деление нацело | Procedure | Процедура
Go to | Переход на | Program | Программа
Do | Выполнять | Repeat | Повторять
Downto | Уменьшить до | String | Строка
Else | Иначе | Then | То
End | Конец блока | To | Увеличивая
File | Файл | Type | Тип
For | Для | Until | До
Function | Функция | Uses | Использовать
If | Если | Var | Переменная
Interrupt | Прерывание | While | Пока
Interface | Интерфейс | With | С
Label | Метка | Xor | Исключающее ИЛИ

Таблица 1

Группа слов, имеющая смысл, называется словосочетание. В языке программирования словосочетание, состоящее из слов и символов и задающее правило вычисления некоторого значения, называется выражением. Минимальная конструкция языка, представляющая законченную мысль, есть предложение. Если предложение языка программирования задает полное описание действия, которое необходимо выполнить, то оно называется оператором. Предложение, описывающее структуру и организацию данных, называется описанием.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Величины в Паскале

Решение задач на ПК - это процесс сбора, обработки и передачи информации. Поэтому задача любой программы состоит в обработке данных. В Паскале данные делятся на константы и переменные. Они определяются идентификаторами (именами).

Константами называются такие данные, которые не изменяются в процессе выполнения программы, в отличие от переменных, которые могут менять свои значения. Имя переменной подобно ящичку, который можно заполнить различными значениями, что нельзя сделать с константой. Переменная характеризуется именем, типом (см.1.2.) и значением.

Кроме констант и переменных существуют так называемые типизированные константы, которые являются как бы промежуточным звеном между переменными и константами (В данном пособии не рассматриваются. Рекомендуется дополнительная литература, например, [1]).


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Структура программы

В программе программист записывает последовательность действий, выполняемых над определенными данными с помощью различных операций для реализации заданной цели. Основные требования, предъявляемые к программе:

  • точность полученного результата;

  • время выполнения;

  • объем требуемой памяти (Максимальный размер программы ограничен. Компилятор позволяет обрабатывать программы, в которых объем данных и генерируемый машинный код не превышают 64 Кбайт каждый. Если объем программы требует большего количества памяти то необходимо использовать дополнительные средства).

Структура программы:

  • Заголовок, состоящий из зарезервированного слова program и имени программы. Заголовок несет смысловую нагрузку и может отсутствовать, однако рекомендуется всегда его записывать для быстрого распознавания нужной программы.

  • Программный блок, состоящий из 2 разделов:

1. Раздел описаний, в котором должны быть описаны все идентификаторы, встречающиеся в программе. Он представляет собой:

список имен подключаемых библиотечных модулей (определяется зарезервированным словом uses);

описание меток;

описание констант;

определение типов данных;

описание переменных;

описание процедур и функций;

Раздел описания начинается соответствующим каждому элементу списка служебным словом (таблица 1), после которого идет последовательность величин одного типа, разделенных запятой. После списка имен ставится двоеточие и указывается тип данных (см. 1.2.).

Любой элемент данного списка в программе может отсутствовать.

2. Раздел операторов.

Данный раздел начинается со служебного слова Begin и заканчивается служебным словом End. Далее задаются действия над объектами программы, введенными в разделе описаний. Операторы, посредством которых эти действия производятся, разделяются точкой с запятой. После последнего слова End ставится точка.

Для лучшего восприятия текста программы и поиска ошибок рекомендуется следующая схема:

  • зарезервированные слова program, procedure, function и т.д. пишутся строчными буквами;

  • идентификаторы начинаются с прописных букв;

  • операторы записываются строчными буквами;

  • логически подчиненные структуры записываются на 1 строку ниже и на 1- 2 позиции правее по отношению к более старшим.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Типы данных

При решении задач выполняется обработка информации различного свойства, например дробные и целые числа, слова, строки и т.д. Для описания множества допустимых значений величины и совокупности операций, в которых участвует данная величина, используется указание ее типа данных. Тип данных – это множество величин, объединенных определенной совокупностью допустимых операций. Каждый тип имеет свой диапазон значений и специальное зарезервированное слово для описания. Все типы данных можно разделить на две группы: скалярные (простые) и структурированные (составные). Простые типы данных также делятся на стандартные и пользовательские. Стандартные – предлагаются разработчиками Турбо Паскаля, а пользовательские разрабатывают сами программисты.

Представим типы данных в виде схемы:

1. Простые типы

Порядковые типы

Целые типы

Логический тип

Символьный тип

Перечисляемый тип

Интервальный тип

Вещественные типы

Ссылочный тип

2. Структурированные типы

Строковый тип

Регулярный тип

Комбинированный тип

Множественный тип

Файловый тип

3. Процедурные типы

В данном учебном пособии будут рассмотрены лишь основные типы данных, используемые наиболее часто в курсе учебного школьного программирования. С другими интересующими типами данных можно познакомиться в специальной литературе (например, [1] ). Рассмотрим пока лишь простые типы данных, структурированные типы требуют отдельного более тщательного рассмотрения и будут изучены в частях 4 и 5.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Целочисленные типы данных

Тип | Диапазон | Требуемая память (байт)
Byte Shorint Integer Word Longint | 0…255 -128 …127 -32768 … 32767 0 … 65535 -2147483648 …2147483647 | 1 1 2 2 4

Значения целых типов могут изображаться в программе 2 способами: в десятичном виде и в шестнадцатеричном. Если число представлено в шестнадцатеричной системе, перед ним без пробела ставится знак $, а цифры старше 9 обозначаются латинскими буквами от A до F. Диапазон изменений таких чисел от $0000 до $FFFF .


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Вещественные типы данных

Вещественные (действительные) типы данных представляют собой значения, которые используются в арифметических выражениях и могут быть представлены двумя способами: с фиксированной и с плавающей точкой.

Тип | Диапазон | Мантисса | Требуемая память (байт)
Real Single Double Extended Comp | 2.9*10E-39 … 1.7*10E38 1.5*10Е-45 … 3.4*10Е38 5.0*10Е-324 … 1.7*10Е308 1.9*10Е-4951 … 1.1*10Е4932 -2Е+63+1 … 2Е+63-1 | 11 – 12 7 – 8 15 – 16 19 – 20 10 – 20 | 6 4 8 10 8

Примечание. Все вещественные типы, кроме Real, могут быть использованы в программе при наличии в ПК математического сопроцессора Intel 8087/80287.

Действительные числа с фиксированной точкой записываются по обычным правилам арифметики, только целая часть от дробной отделяется точкой. Если точка отсутствует, число считается целым. Перед числом может стоять знак «+» или «-». Если знака нет, то число считается положительным.

Числа в форме с плавающей точкой представляются в экспоненциальном виде: mE+p, где m – мантисса (целое или дробное число), Е означает 10 в степени, р – порядок (целое число).

Например, 5.18Е+2 = 5.18 * 102 = 518

10Е-03 = 10 * 10 –3 = 0.01


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Символьный тип

Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу приписывается целое число в диапазоне от 0 до 255. Для кодировки используется код ASCII. Например код символа 'A' при русской раскладке клавиатуры будет равен 192

Для размещения в памяти переменной литерного типа нужен 1 байт.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Логический тип

Логический (булевский) тип boolean определяется двумя значениями: true (истина) и false (ложь). Он применяется в логических выражениях и выражениях отношения. Для размещения в памяти - 1 байт.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Арифметические операции и стандартные функции

Арифметическим называется выражение, составленное из операндов – величин, над которыми производится операция, скобок и знаков операций. В результате вычисления выражения получается значение определенного типа. Порядок вычисления выражения определяется скобками и старшинством операций. Они делятся на арифметические, отношения, логические и другие. Операции могут быть унарными и бинарными.

Арифметические операции

Операция | Действие | Тип операндов | Тип результата
Бинарные
+ | Сложение | Целый, вещественный | Целый, вещественный
- | Вычитание | Целый, вещественный | Целый, вещественный
* | Умножение | Целый, вещественный | Целый, вещественный
/ | Деление | Целый, вещественный | Вещественный
DIV | Целочисленное деление | Целый | Целый
MOD | Остаток от деления | Целый | Целый
Унарные
+ | Сохранение знака | Целый, вещественный | Целый, вещественный
- | Отрицание знака | Целый, вещественный | Целый, вещественный

Операции отношения

Операции отношения выполняют сравнение двух операндов и определяют, истинно значение или ложно. Сравниваемые величины могут принадлежать к любому типу данных, и результат всегда имеет логический тип, принимая одно значение из двух: истина или ложь.

Операция | Название | Выражение
= | Равно | А=В
<> | Неравно | А<>B
> | Больше | A>B
< | Меньше | A<B
>= | Больше или равно | A>=B
<= | Меньше или равно | A<=B

Стандартные математические функции

Обращение | Тип аргумента | Тип результата | Функция
Abs(x) | Целый, вещественный | Целый, вещественный | Модуль аргумента
Arctan(x) | Целый, вещественный | Вещественный | Арктангенс
Cos(x) | Целый, вещественный | Вещественный | Косинус
Exp(x) | Целый, вещественный | Вещественный | ех - экпонента
Frac(x) | Целый, вещественный | Вещественный | Дробная часть х
Int(x) | Целый, вещественный | Вещественный | Целая часть х
Ln(x) | Целый, вещественный | Вещественный | Натуральный логарифм
Random |  | Вещественный | Псевдослучайное число [0,1]
Random(x) | Целый | Целый | Псевдослучайное число [0,х]
Round(x) | Вещественный | Целый | Округление до ближайшего целого
Sin(x) | Целый, вещественный | Вещественный | Синус
Sqr(x) | Целый, вещественный | Вещественный | Квадрат х
Sqrt(x) | Целый, вещественный | Вещественный | Корень квадратный из х
Trunc(x) | Вещественный | Целый | Ближайшее целое, не превышающее х по модулю

Логические операции

Логические выражения в результате вычисления принимают логические значения True и False. Операндами это выражения могут быть логические константы, переменные, отношения. Идентификатор логического типа в Паскале: boolean.

В Паскале имеется 4 логические операции: отрицание -NOT, логическое умножение -AND, логическое сложение - OR, исключающее «или» -XOR . Использованы обозначения: T – true, F – false.

A | B | Not A | A and B | A or B | A xor B
T | T | F | T | T | F
T | F | F | F | T | T
F | F | T | F | F | F
F | T | T | F | T | T

Приоритеты операций: not, and, or, xor. Операции отношения ( = , <> …) имеют более высокий приоритет, чем логические операции, поэтому их следует заключать в скобки при использовании по отношению к ним логических операций.

Пример. Составить программу, по которой будет выведено значение «истина», если точка с заданными координатами (x, y) лежит внутри некоторой области, и «ложь» – в противном случае. Область состоит из 2 частей: первая часть x £ 0; y ³ -x-3 и y2 + x2 £ 9, вторая часть - x ³ 0 и x2 + y2 £ 25.

Решение: Данная область состоит из 2 частей. 1: x<=0; x2+y2<=9; y>= - x-3.

2: x>=0; x2+y2<=25.

Точка с координатами (x,y) лежит в данной области, если она принадлежит 1 или 2 части.

Program point;

Var x, y:real; L:boolean;

Begin

Writeln(‘Введите х и y’);

Readln(x,y);

L:= (x<=0) and (sqr(x)+sqr(y)<=9) and (y>=-x-3) or

(x>=0) and (sqr(x)+sqr(y)<=25);

writeln(‘Точка лежит в области?’, L);

end.

Результатом выполнения программы будет:

Введите x и y

2 0 {с клавиатуры сами ввели через пробел 2 и 0}

Точка лежит в области?TRUE

Приоритет операций (в порядке убывания):

  • вычисление функции;

  • унарный минус, not;

  • умножение, деление, div, mod, and;

  • сложение, вычитание, or, xor;

  • операции отношения


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Ввод и вывод данных

Решение даже самой простой задачи на компьютере не обходится без операций ввода – вывода информации. Ввод данных – это передача информации от внешнего носителя в оперативную память для обработки. Вывод - обратный процесс, когда данные передаются после обработки из оперативной памяти на внешний носитель (экран монитора, принтер, дискету или винчестер и другие устройства). Выполнение этих операций производится путем обращения к стандартным процедурам: Read, Readln, Write, Writeln.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Ввод данных с клавиатуры

Процедура чтения Read обеспечивает ввод данных для последующей их обработки программой. Общий вид: Read (<список переменных>);

В списке перечисляются имена переменных. Значения этих переменных набираются через пробел на клавиатуре и высвечиваются на экране после запуска программы. После набора данных для одной процедуры Read нажимается клавиша ввода Enter. Значения переменных должны вводиться в строгом соответствии с синтаксисом языка Паскаль. Если соответствие нарушено, то возникают ошибки.

Процедура чтения Readln аналогична процедуре Read, единственное отличие в том, что после считывания последнего в списке значения курсор переходит на начало новой строки.

Пример:

Program primer;

Var i, k:integer; c,d, s: real;

begin

readln (c,d);

read(i,k);

…

end.

В данном случае необходимо ввести сначала два действительных числа через пробел. Переменной с присваивается значение, равное первому введенному числу, а переменной d – значение, равное второму введенному числу. После ввода этих значений курсор переходит на начало новой строки (за это отвечает ln следующий за словом Read). Далее требуется ввести еще два целых числа, которые будут присвоены значениям переменных i и k соответственно.


Изучаем Pascal с нуля

Глава 1. Основные понятия системы программирования Турбо Паскаль

Вывод данных

Процедура вывода Write производит вывод данных.

Общий вид: Write(<список вывода>);

В списке вывода могут быть представлены выражения допустимых типов данных (integer, real, char и т.д.) и произвольный текст, заключенный в апострофы.

Например, Write(‘Привет’); Write(34.7); Write(45+55); Write(b, d);

Процедура Writeln аналогична процедуре Write. Отличие в том, что после вывода последнего в списке выражения курсор переходит на начало новой строки.

В процедурах вывода Write и Writeln имеется возможность записи выражения, определяющего ширину поля вывода.

При рассмотрении форматов вывода примем следующие обозначения:

I, p, q – целочисленное выражение;

R - выражение вещественного типа;

# - цифра;

* - знак «+» или «- »;

_ - пробел.

Значение I | Выражение | Результат
324 | Write (I); | 324
34 | Write (I, I, I); | 343434
324 | Write (I : 6); | ___324
312 | Write (I + I : 7); | ____624
Значение R | Выражение | Результат
123.432 | Write (R); | __1.2343200000E+02
-1.34E+01 | Write (R); | _ -1.3400000000E+01
304.55 | Write (R :15); | 3.045500000E+02
Значение R | Выражение | Результат
304.66 | Write (R :8 : 4); | 304.6600
45.322 | Write (R : 5 : 2); | 45.32

Пример:

Program primer;

Var

a, b, c, sum:integer;

begin

a:=4; b:=6; c:=55;

Write(a:3); Write(b:3); Write(c:3);

Sum:=a+b+c;

Writeln (‘A=’,a);

Writeln (‘B=’,b);

Writeln (‘C=’,c);

Writeln (‘Сумма A+B+C равна ’, sum);

End.

Результат выполнения:

4 6 55

А=4

В=6

С=55

Сумма А+В+С равна 65


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Общие сведения

Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Операторы, не содержащие других операторов, называются простыми. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры, пустой. Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Эти операторы можно разделить на три группы: составные, условные и повтора.


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Оператор присваивания

Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Операторы, не содержащие других операторов, называются простыми. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры, пустой. Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Эти операторы можно разделить на три группы: составные, условные и повтора.


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Оператор вызова процедуры

Оператор вызова процедуры служит для активизации стандартной процедуры или процедуры, определенной пользователем. Стандартные процедуры находятся в файлах, подключаемых модулем и для их использования достаточно указать имя процедуры, и если необходимо дополнительные параметры. Для того, чтобы вызвать свою процедуру, ее для этого надо описать перед началом программы (begin), а затем уже использовать.

Например, ClrScr; {Вызов стандартной процедуры очистки экрана}. Подробное рассмотрение данной темы приведено в части 3.


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Оператор безусловного перехода

Оператор безусловного перехода (go to) означает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой, оператор. Общий вид: go to <метка>.

Метка объявляется в разделе описания меток и состоит из имени и следующего за ним двоеточия. Имя метки может содержать цифровые и буквенные символы, максимальная длина имени ограничена 127 знаками. Раздел описания меток начинается зарезервированным словом Label, за которым следует имя метки.

Пример.

Program primer;

Label 999, metka;

Begin

….

Go to 999;

…

999: write (‘ Имя’);

…

Go to metka;

….

Metka: write(‘Фамилия’);

…

end.

Использование безусловных передач управления в программе считается теоретически избыточным и подвергается критике, так как способствует созданию малопонятных и трудномодифицируемых программ, которые вызывают сложности при отладке. Поэтому рекомендуется минимальное использование оператора безусловного перехода с соблюдением следующих правил:

  • Следует стремиться применять операторы перехода для передачи управления только вниз (вперед) по тексту программы;

  • Расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Пустой оператор

Пустой оператор не содержит никаких символов и не выполняет никаких действий. Используется для организации перехода к концу блока в случаях, если необходимо пропустить несколько операторов, но не выходить из блока. Для этого перед зарезервированным словом end ставятся метка и двоеточие, например:

Label m;

…

begin

…

go to m;

…

m:

end;


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Структурные операторы

Структурные операторы представляют собой конструкции, построенные из других операторов по строгим правилам. Их можно разделить на три группы: составные, условные и повтора. Применение структурных операторов в вашей программе очень часто просто незаменимо, потому что они позволяют программисту сделать его программу зависимой от каких-либо условий, например введенных пользователем. К тому же применяя операторы повтора вы получаете возможность обрабатывать большие объемы данных за сравнительно малый отрезок времени (это конечно же зависит и от процессора:)


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Составной оператор

Это оператор представляет собой совокупность произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end. Он воспринимается как единое целое и может находиться в любом месте программы, где возможно наличие оператора.


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Условные операторы

Условные операторы предназначены для выбора к исполнению одного из возможных действий, в зависимости от некоторого условия (при этом одно из действий может отсутствовать). Для программирования ветвящихся алгоритмов в Турбо Паскале есть специальные операторы. Одним из них является условный оператор If. Это одно из самых популярных средств, изменяющих порядок выполнения операторов программы.

Он может принимать одну из форм:

If <условие> then <оператор1>

else<оператор2>;

или

If <условие> then <оператор>;

Оператор выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисление получается значение логического (булевского) типа. Если это значение – «истина», то выполняется оператор1, указанный после слова then. Если же в результате имеем «ложь», то выполняется оператор2. В случае, если вместо оператора1 или оператора2 следует серия операторов, то эту серию операторов необходимо заключить в операторные скобки begin…end.

Обратить внимание, что перед словом else точка с запятой не ставится.

Пример 1. Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст ³ 7лет).

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If v>=7 then writeln(‘Принимаем в школу’)

else writeln (‘Не принимаем в школу’);

end.

Задание. Модифицировать данную программу, чтобы ограничить верхнюю границу приема в школу 16 годами.

Решение:

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If (v>=7) and (v<=16) then writeln(‘Принимаем в школу’)

else writeln (‘Не принимаем в школу’);

end.

Пример 2. Даны два числа. Меньшее из этих чисел заменить суммой данных чисел, большее - произведением.

Program sh;

Var x, y,s,p: integer;

Begin

Write(‘Введите 2 числа’);

Readln(x, y);

S:=x+y; p:=x*y;

If x>=y

then begin y:=s; x:=p; end

else begin x:=s; y:=p; end;

writeln(‘x=’, x);

writeln(‘y=’, y);

end.

Если оператор If обеспечивает выбор из двух альтернатив, то существует оператор, который позволяет сделать выбор из произвольного числа вариантов. Это оператор выбора Case. Он организует переход на один из нескольких вариантов действий в зависимости от значения выражения, называемого селектором.

Общий вид: Case k of

<const1>: <оператор1>;

<const2>: <оператор2>;

…..

<constN>: <операторN>

else <операторN+1>

end;

Здесь k – выражение-селектор, которое может иметь только простой порядковый тип (целый, символьный, логический). <const1>, …<constN> - константы того же типа, что и селектор.

Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна значению селектора, то выполняется оператор, стоящий за словом else. Если же это слово отсутствует, то активизируется оператор, находящийся за границей Case, т.е. после слова end.

При использовании оператора Case должны выполняться следующие правила:

1. Выражение-селектор может иметь только простой порядковый тип (целый, символьный, логический).

2. Все константы, которые предшествуют операторам альтернатив, должны иметь тот же тип, что и селектор.

3. Все константы в альтернативах должны быть уникальны в пределах оператора выбора.

Формы записи оператора:

Селектор интервального типа:

Case I of

1..10 : writeln(‘число в диапазоне 1-10’);

11.. 20 : writeln(‘число в диапазоне 11-20’);

else writeln(‘число вне пределов нужных диапазонов’)

end;

Селектор целого типа:

Case I of

1 : y:= I+10;

2 : y:= I+20;

3: y:= I +30;

end;

Пример 1. Составить программу, которая по введенному номеру дня недели выводит на экран его название.

Program days;

Var day:byte;

Begin

Write(‘Введите номер дня недели’);

Readln(day);

Case day of

1: writeln(‘Понедельник’);

2: writeln(‘Вторник’);

3: writeln(‘Среда’);

4: writeln(‘Четверг’);

5: writeln(‘Пятница’);

6: writeln(‘Суббота’);

7: writeln(‘Воскресенье’)

else writeln(‘Такого дня нет’);

end; end.

Пример 2. Составить программу, которая по введенному номеру месяца выводит на экран название времени года.

Program m;

Var k:byte;

Begin

Write(‘Введите номер месяца’);

Readln(k);

Case k of

1, 2, 12: writeln(‘Зима’);

3, 4, 5: writeln(‘Весна’);

6, 7, 8: writeln(‘Лето’);

9, 10, 11: writeln(‘Осень’)

else writeln(‘Такого месяца нет’);

end; end.


Изучаем Pascal с нуля

Глава 2. Операторы языка Паскаль

Операторы повтора (цикла)

Если в программе возникает необходимость неоднократного выполнения некоторых операторов, то для этого используются операторы повтора (цикла). В языке Паскаль различают три вида операторов цикла: цикл с предусловием (while), цикл с постусловием (repeat) и цикл с параметром (for).

Если число требуемых повторений заранее известно, то используется оператор, называемый оператором цикла с параметром.

Оператор цикла с параметром имеет два варианта записи:

1) for <имя переменной> := <начальное значение> to <конечное значение> do

<тело цикла>

2) for <имя переменной> := <начальное значение> downto <конечное значение> do

<тело цикла>

Имя переменной – параметр цикла, простая переменная целого типа; <тело цикла> - операторы или оператор. Цикл повторяется до тех пор пока значение параметра лежит в интервале между начальным и конечным значениями. В первом варианте при каждом повторении цикла значение параметра увеличивается на 1, во втором - уменьшается на 1.

При первом обращении к оператору for вначале определяются начальное и конечное значения, и присваивается параметру цикла начальное значение. После этого циклически повторяются следующие действия.

1. Проверяется условие параметр цикла <= конечному значению.

2. Если условие выполнено, то оператор продолжает работу (выполняется оператор в теле цикла), если условие не выполнено, то оператор завершает работу и управление в программе передается на оператор, следующий за циклом.

3. Значение параметра изменяется (увеличивается на 1 или уменьшается на 1).

Если в теле цикла располагается более одного оператора, то они заключаются в операторные скобки begin … end;

Пример 1. Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15°С до 30°С с шагом в 1°С. Перевод осуществляется по формуле: F=C*1.8+32.

Program zf;

Var i:integer; f:real;

Begin

Writeln(‘Температура’);

For i:=15 to 30 do

Begin

F:=i*1.8+32;

Writeln(‘по Цельсию’, i, ‘по Фаренгейту’, f:5:2);

End;

End.

Пример 2. Вывести на экран натуральные числа от 1 до 9 в обратном порядке.

Program z;

Var i:integer;

Begin

For i:=9 downto 1 do

Writeln(i);

End.

Если число повторений заранее неизвестно, а задано лишь условие его повторения (или окончания), то используются операторы while и repeat. Оператор While часто называют оператором цикла с предусловием. Так как проверка условия выполнения цикла производится в самом начале оператора.

Общий вид: While <условие продолжения повторений> do

<тело цикла>;

Тело цикла – простой или составной оператор или операторы. Если операторов в теле цикла несколько, то тело цикла заключается в операторные скобки begin…end.

Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат – «истина», тело цикла выполняется и снова вычисляется выражение условия. Если результат–«ложь», происходят выход из цикла и переход к первому после while оператору.

Пример. Найти сумму 10 произвольных чисел.

Program z;

Const

N=10;

Var k, x, s: integer;

Begin

k:=0; s:=0; {k- количество введенных чисел}

while k < n do

begin

k:=k+1;

write(‘Введите число’);

readln(x);

s:=s+x;

end;

writeln(‘Сумма чисел равна’, s);

end.

Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения операторов тела цикла и таким образом гарантируется хотя бы однократное выполнение цикла. Во-вторых, тем, что критерием прекращения цикла является равенство выражения константе true . За это данный оператор часто называют циклом с постусловием, так как он прекращает выполняться, как только условие, записанное после слова until, выполнится. Оператор цикла repeat состоит из заголовка, тела и условия окончания.

Общий вид: Repeat

<оператор>

. . . . .

<оператор>

until <условие окончания цикла>

Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. В любом случае этот цикл выполняется хотя бы один раз. Если условие не выполняется, т.е. результатом выражения является False, то цикл активизируется еще раз. Если условие выполнено, то происходит выход из цикла. Использования операторных скобок, в случае, если тело цикла состоит из нескольких операторов, не требуется.

Пример. Составить программу, которая вводит и суммирует целые числа. Если введено значение 999, то на экран выводится результат суммирования.

Program s;

Var x, s:integer;

Begin

S:=0;

Repeat

Write(‘Ввести число’);

Readln(x);

If x<>999 then s:=s+x;

Until x=999;

Writeln(‘Сумма введенных чисел’, s);

End.


Изучаем Pascal с нуля

Глава 3. Процедуры и функции

Стандартные библиотечные модули

В систему Турбо Паскаль версии 6.0. и старше включены 8 модулей: System, Crt, Dos, Graph, Graph3, Overlay, Printer, Turbo3 и специализированная библиотека Turbo Vision. Модуль System подключается по умолчанию, поэтому в любой программе становятся доступными все его встроенные процедуры и функции (см главу 1.3.). Остальные модули должны подключаться с помощью зарезервированного слова uses с добавлением имени модуля. Например: uses Crt.

Рассмотрим кратко назначение каждого модуля.

System - сердце Турбо Паскаля. Подпрограммы, содержащиеся в нем, обеспечивают работу всех остальных модулей системы.

Crt - содержит средства управления дисплеем и клавиатурой компьютера.

Dos - включает средства, позволяющие реализовывать различные функции Dos.

Graph3 - поддерживает использование стандартных графических подпрограмм.

Overlay - содержит средства организации специальных оверлейных программ.

Printer - обеспечивает быстрый доступ к принтеру.

Turbo3 - обеспечивает максимальную совместимость с версией Турбо Паскаль 3.0.

Graph - содержит пакет графических средств.

Turbo Vision - библиотека объектно-ориентированных программ для разработки пользовательских интерфейсов.

На примере модуля Crt познакомимся поближе с работой встроенных процедур и функций. Он устанавливает режим работы адаптера дисплея, организует вывод в буфер экрана, регулирует яркость свечения символов и т.д. С момента подключения пользователю доступны все содержащиеся в нем стандартные средства. Рассмотрим некоторые из них.

§ Установка текстового режима

TextMode(Mode:integer);

Значение Mode равно 1 (40 / 25) или 3(80 / 25).

§ Очистка экрана

ClrScr – полностью очищает экран;

ClrEol – стирает все символы в строке, начиная с текущей позиции до конца строки;

§ Управление курсором

GotoXY(x,y) – перемещает курсор в позицию, заданную координатами x, y.

§ Управление цветом

TextColor(Color:byte) - установка цвета выводимых символов;

TextBackGround(Color) – цвет фона.

Чтобы добавить при выводе эффект мерцания, при установке цвета указывается Blink (16).

Пример. Вывести в центре экрана цветными символами слово «Привет» с эффектом мерцания.

Program primer;

Uses crt;

Begin

TextMode(3);

Clrscr;

Gotoxy(36,12);

Textcolor(5+16);

Write(‘Привет’);

End.


Изучаем Pascal с нуля

Глава 3. Процедуры и функции

Функции

Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции:

Function <имя> (<параметры>): <тип результата>;

Const …; ù

… ý блок описания

Var ….; û

begin

<операторы>

end;

В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип.

Пример 1. Найти значение следующего выражения: F(t) – F(c), где F(x)=Öx +2x2 +3x

Program m;

Uses crt;

Var t, c, r : real;

Function F(x: real) : real;

Begin

F:= sqrt(x)+ 2*sqr(x) + 3*x;

End;

Begin

Clrscr;

Write(‘Введите числа’);

Readln (t, c);

r:= F(t) – F(c);

write(‘результат =’, r:8:3); {8 символов на все число, 3 – на дробную часть, см п.1.4.2}

end.

Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел.

Program max;

Uses crt;

Var a, b, c, d, m, p, q:real;

Function Bid(x, y: real) : real;

Begin

If x>y then bid:=x

else bid:=y;

End;

Begin

Clrscr;

Write(‘Введите числа’);

Readln (a, b, c, d);

p:=bid(a, b);

q:= bid(c, d);

m:=bid(p, q);

write(‘наибольший элемент’, m:8:3);

end.


Изучаем Pascal с нуля

Глава 4. Массивы

Одномерные массивы

Все простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные, типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип (часть 5).

С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений.

Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем.

Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элементы в массиве.

Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента: <имя массива>[<индекс>].

Описание массива определяет его имя, размер массива и тип данных. Общий вид описания массива:

Type <имя нового типа данных>=array[<тип индекса>] of <тип компонентов>;

Далее, в перечне переменных указывается имя массива, и через двоеточие указывается имя нового типа данных. Массив может быть описан и без представления типа в разделе описания типов данных:

Var <имя массива>: array [<тип индекса>] of <тип компонентов>;

Чаще всего в качестве типа индекса используется интервальный целый тип.

Одномерные массивы

Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов.

Присваивание начальных значений (заполнение массива) заключается в присваивании каждому элементу массива некоторого значения, заданного типа. Наиболее эффективно эта операция осуществляется при помощи оператора for. Ввод данных может осуществляться : с клавиатуры, при помощи различных формул, в том числе и датчика случайных чисел.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу и т.д.

Алгоритм решения задач с использованием массивов:

· Описание массива

· Заполнение массива

· Вывод (распечатка) массива

· Выполнение условий задачи

· Вывод результата

Пример 1. Задан одномерный массив В(10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k.

Program massiv;

Uses crt;

Var b:array [1..10] of integer;

I, k, s : integer;

Begin

Clrscr; S:=0;

For i:=1 to 10 do

Begin

Write(‘Введите’, i, ‘-й элемент массива ’);

Readln (B[i]);

Write(b[i], ‘ ‘);

End;

Write(‘Введите число k’);

Readln(k);

For i:=1 to 10 do

If b[i]>k then s:=s+1;

Write(‘Количество элементов’, s);

End.

Пример 2. Определить самую высокую температуру и самый теплый день в мае.

Program massiv;

Uses crt;

Var t:array [1..31] of integer;

I, max, n : integer;

Begin

Clrscr;

For i:=1 to 31 do

Begin

t[i]:=random(20);

Write(b[i], ‘ ‘);

End;

Max:=t[1]; n:=1;

For i:=2 to 31 do

Begin

If t[i] > max then max:=t[i]; n:=i ;

End;

Write(‘максимальная температура’, max, ‘в’, n, ‘день’);

End.


Изучаем Pascal с нуля

Глава 4. Массивы

Двумерные массивы

Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:

Var a: array [1..10] of array [1.. 20] of real;

Var a: array [1..10, 1..20] of real;

Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for.

Например, For i:= 1 to 10 do

For j:= 1 to 20 do

A[i, j] := 0;

При организации вложенных (сложных) циклов необходимо учитывать:

· Все правила, присущие простому циклу, должны соблюдаться

· Имена параметров для циклов, вложенных один в другой, должны быть различными

· Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо

Пример 1. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.

Program Pifagor;

Uses crt;

Var p: array[1..9, 1..9] of integer; i, j:integer;

Begin

Clrscr;

for i:=1 to 9 do

for j:= 1 to 9 do

p[i,j]:= i*j;

for i:=1 to 9 do

begin

for j:=1 to 9 do

write(p[i,j], ‘ ‘);

writeln

end;

end.

Пример 2. Задан двумерный массив В(10, 10), заполненный случайными числами из

[-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.

Program massiv;

Uses crt;

Var b: array[1..10, 1..10] of integer; i, j, k :integer;

Begin

Clrscr;

for i:=1 to 10 do

begin

for j:= 1 to 10 do

begin

b [i,j]:= random(20)-10;

write(b[i,j], ‘ ‘);

end;

writeln;

end;

write(‘Введите число k’);

readln (k);

For i:=1 to 10 do

For j:=1 to 10 do

If b[i, j] >k then write (b[i, j]);

End.


Изучаем Pascal с нуля

Глава 5. Строковые величины

Символьные величины

Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу задается целое число от 0 до 255. В программе значения переменных и констант типа char должны быть заключены в апострофы.

Пример.

Program lit;

Var c, symbol: char;

Begin

C:= ‘A’;

Symbol:=’д’;

Writeln(c);

Write(symbol);

End.

Результат выполнения программы:

А

д

Над данными символьного типа определены операции отношения: =, <>, >,<,<=,>=, вырабатывающие результат логического типа, и следующие стандартные функции:

Chr(x) – преобразует выражение х в символ и возвращает значение символа

Ord(ch) – преобразует символ ch в его код и возвращает значение кода

Pred(ch) – возвращает предыдущий символ

Succ(ch) – возвращает следующий символ

Пример.

Ord(‘:’) =58

Ord(‘A’)=65

Chr(128)=Б

Pred(‘Б’)=А

Succ(‘Г’)=Д


Изучаем Pascal с нуля

Глава 5. Строковые величины

Строковые величины

Строка (строковый тип данных) – это последовательность символов кодовой таблицы ПК. Количество символов в строке (длина строки) может лежать в диапазоне от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует значение максимальной длины строки данного типа (заключается в квадратные скобки).

Строковые данные могут использоваться в качестве констант. Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’.

Переменную строкового типа можно определить в разделе описания переменных:

Var <имя>: string[<максимальная длина строки>].

Например, var Name: string[20]. В описании строки можно не указывать длину, в этом случае она равна максимальной величине – 255. Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, N[5]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях.

Выражения, в которых операндами служат строковые данные, называются строковыми. Они могут состоять из строковых констант, переменных, знаков операций. Над этими данными допустимы операция сцепления (конкатенация) и операции отношения.

Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов.

Операции отношения (=, <>, >, <, <=, >=) проводят сравнение двух строк и имеют приоритет более низкий, чем операция конкатенации. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов.

Например, ‘MS-DOS’<’MS-Dos’.

Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше.

Например, ‘Компьютер’<’Компьютер ’.

Строки равны, если они полностью совпадают.

Например, ‘Маска’ = ’Маска’.

Для обработки строковых данных можно использовать специальные процедуры и функции.

Процедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz.

Пример

Значение St | Выражение | Результат
‘абвгде’ | Delete(St, 4, 2); | ‘абве’
‘река Волга’ | Delete(St, 1, 5); | ‘Волга’

Процедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz.

Пример

Значение S1 | Значение S2 | Оператор | Результат
‘ ЕС ’ | ‘ЭВМ1841’ | Insert (S1, S2, 4); | ‘ЭВМ ЕС 1841’
‘ N’ | ‘ Рис. 2’ | Insert (S1, S2 , 6); | ‘ Рис. N2’

Процедура Str(N,St) – преобразование числового значения N в строковый и помещение результата в строку St.

Пример

Значение N | Выражение | Результат
1500 | Str (N:6,St); | ‘ 1500’

Процедура Val(St, N,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено.

Пример

Значение St | Выражение | Результат
‘1500’ | Val(St, N,Code); | Code=0
’14.2A+02 | Val(St, N,Code); | Code=5

Функция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.

Пример

Значение S | Выражение | Результат
‘Мама мыла раму’ | Copy(S, 6, 4); | ‘мыла’

Функция Concat(S1,S2,…,Sn) – выполняет сцепление строк S1,S2,…,Sn в одну строку.

Пример

Выражение | Результат
Concat(‘Мама ’,’мыла ’,’раму’) | ‘Мама мыла раму’

Функция Length(S) – определяет текущую длину строки S.

Пример

Значение S | Выражение | Результат
‘1500 символов’ | Length(S) | 13

Функция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1.

Пример

Значение S2 | Выражение | Результат
‘abcdef’ | Pos(‘cd’,S2) | 3
‘abcdef’ | Pos(‘k’,S2) | 0

Функция UpCase (ch) – преобразует строчную букву в прописную.Обрабатывает буквы только латинского алфавита.

Пример

Значение Ch | Выражение | Результат
‘d’ | UpCase (ch) | ‘D’

Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.

Program Stroki;

Var S1, S2:string;

Begin

Write(‘Введите строку’);

Readln(S1);

S2:= ‘ ‘;

For i:=1 to length(S1) do

If (S1[i]>=’0’) and (S1[i]<=’9’)

Then S2:=S2+S1[i];

Writeln(‘Результат’, S2)

End.


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Графика в Турбо Паскале

Экран дисплея ПК представляет собой прямоугольное поле, состоящее из большого количества точек. Дисплей может работать в текстовом и графическом режимах. Но в отличие от текстового режима в графическом режиме имеется возможность изменять цвет каждой точки.

Чтобы сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку Graph (в этом библиотечном модуле содержится 79 графических процедур, функций, различных стандартных констант и типов данных), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.

Аппаратная поддержка графики ПК обеспечивается двумя основными модулями: видеомонитором и видеоадаптером. Какой бы адаптер ни был установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Турбо Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют графические драйверы.

Запуск и завершение работы в графической системе осуществляется следующим образом:

1. Подключить модуль Graph (библиотеку графических процедур): normal">uses Graph;

2. Установить графический режим:

- описываем переменные, которые определяют графический драйвер и монитор:

var gd, gm: integer;

- задаем команду ПК для самовыбора значений переменных:

gd:=Detect;(значение gm после команды gd:=detect; определяется автоматически)

- инициализируем графический режим:

InitGraph( gd, gm,’ указывается путь к драйверу, чем подробнее, тем лучше’)

С этого момента все графические средства доступны пользователю.

3. Завершить работу в графической системе: CloseGraph;


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Базовые процедуры и функции

Для построения изображений на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение Х (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Чтобы строить изображения, необходимо указывать точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране. В графических режимах видимого курсора нет, но есть невидимый текущий указатель CP (Current Pointer). Фактически это тот же курсор, но он невидим.

Процедуры модуля Graph

Процедура | Формат | Действие
SetColor | SetColor (a: word); | Устанавливает цвет, которым будет осуществляться рисование
SetBkColor | SetBkColor (a: word); | Устанавливает цвет фона
SetFillStyle | SetFillStyle (a,b: word); a – стиль закраски, b – цвет | Устанавливает стиль и цвет закраски
SetLineStyle | SetLineStyle (a,b,c: word); а – стиль линии, b- образец построения линии (может устанавливаться пользователем), с-толщина линии | Устанавливает стиль и толщину линии
SetTextStyle | SetTextStyle (a,b,c: word); | Устанавливает шрифт, стиль и размер текста
SetFillPattern | SetFillPattern (Pattern: FillpatternType; Color:word); Pattern- маска | Выбирает шаблон заполнения, определенный пользователем
ClearDivice | ClearDivice | Очищает экран и устанавливает текущий указатель в начало
SetViewPort | SetViewPort (x1, y1 , x2, y2 : integer, Clip:boolean); | Устанавливает текущее окно для графического вывода
ClearViewPort | ClearViewPort | Очищает окно
PutPixel | PutPixel (a,b,c :integer); | Рисует точку цветом с в (x,y)
Line | Line(x1, y1 , x2,y2 :integer); | Рисует линию от (x1, y1) к (x2,y2)
Rectangle | Rectangle (x1, y1 , x2, y2:integer ); | Рисует прямоугольник с диагональю от (x1, y1) к (x2, y2)
Bar | Bar (x1, y1 , x2, y2:integer); | Рисует закрашенный прямоугольник
Bar3D | Bar3D (x1, y1 , x2,y2, d:integer, a:boolean); | Рисует трехмерную полосу (параллелепипед)
Circle | Circle (x,y,r: word); | Рисует окружность радиуса r с центром в точке (x, y)
Arc | Arc(x, y, a, b, R:integer); a, b- начальный и конечный углы в градусах | Рисует дугу из начального угла к конечному, используя (x,y) как центр
Ellipse | Ellipse (x, y, a, b, Rx, Ry: integer); a, b- начальный и конечный углы в градусах | Рисует эллиптическую дугу от начального угла к конечному, используя (x, y) как центр
FillEllipse | FillEllipse (x, y, Rx, Ry:integer); Rx, Ry – вертикальная и горизонтальная оси | Рисует закрашенный эллипс
MoveTo | MoveTo (x, y:integer); | Передвигает текущий указатель в (x, y)
MoveRel | MoveRel(x, y : integer); | Передвигает текущий указатель на заданное расстояние от текущей позиции на x по горизонтали и на y по вертикали
OutText | OutText (text: string); | Выводит текст от текущего указателя
OutTextxy | OutTextxy(x, y: integer, text: string); | Выводит текст из (x, y)
Sector | Sector(x, y, a, b, Rx, Ry: integer); a, b- начальный и конечный углы в градусах | Рисует и заполняет сектор эллипса

Функции модуля Graph

GetBkColor | Возвращает текущий фоновый цвет
GetColor | Возвращает текущий цвет
GetX | Возвращает координату X текущей позиции
GetY | Возвращает координату Y текущей позиции
GetPixel | Возвращает цвет точки в (x, y)


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Экран и окно в графическом режиме

По аналогии с текстовыми режимами графический экран может рассматриваться как одно большое или несколько меньших по размеру окон. После установки окна вся остальная площадь экрана как бы не существует, и весь ввод-вывод осуществляется только через окно. В каждый отдельный момент может быть активным только одно окно. Если окон несколько, за переключение ввода-вывода в нужное окно отвечает программист.

По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего угла устанавливаются автоматически процедурой инициализации InitGraph.

Если требуется создать окно, следует воспользоваться процедурой SetViewPort (x1, y1, x2, y2 : integer, Clip:boolean) ; где x1, y1 – координаты левого верхнего угла, x2, y2 –

координаты правого нижнего угла окна. Параметр Clip определяет, будет ли рисунок отсекаться при выходе за границы окна (Clip:= True) или нет (Clip:=False). После создания окна за точку отсчета принимается верхний левый угол окна, имеющий координаты (0,0).

Координатную систему полного экрана можно восстановить, в частности, с помощью ClearDevice или задав в процедуре установки окна максимально возможные значения:

SetViewPort( 0, 0, GetMaxX, GetMaxY, true);

Необходимо помнить, что в отличие от текстовых окон графические окна после команды установки фона SetBkColor и очистки с помощью ClearViewPort меняют фон вместе с общим фоном экрана. Поэтому фон (точнее «закраску») графического окна следует устанавливать с помощью процедур SetFillStyle и SetFillPattern.


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Вывод простейших фигур

Вывод точки

Какие бы изображения не выводились на экран, все они построены из точек, теоретически можно создать любое изображение путем построения точек определенного цвета в нужном месте экрана. В библиотеке Graph вывод точки осуществляется процедурой

PutPixel (x, y: integer, color:word);

где x, y: координаты расположения точки, color – цвет.

Возможные значения Color приведены в таблице:

Цветовая шкала

Цвет | Код | Цвет | Код
Black – черный | 0 | DarkGray – темно-серый | 8
Blue – синий | 1 | LightBlue – голубой | 9
Green - зеленый | 2 | LightGreen – ярко-зеленый | 10
Gyan – бирюзовый | 3 | LightGyan – ярко-бирюзовый | 11
Red – красный | 4 | LightRed – ярко-красный | 12
Magenta – малиновый | 5 | LightMagenta – ярко-малиновый | 13
Brown – коричневый | 6 | Yellow – желтый | 14
LightGray – светло-серый | 7 | White – белый | 15

Пример.

PutPixel(320, 240, 4); ü

ý- выводит в центре экрана точку красного цвета

PutPixel(320,240, Red);þ

Вывод линии

Из точек строятся линии (отрезки прямых). Это можно сделать с помощью процедуры

Line (x1, y1 , x2,y2 :integer);

где x1, y1 – координаты начала, x2,y2 - координаты конца линии, например Line(1,1,600,1);

В процедуре Line нет параметра для установки цвета. В этом случае цвет задается процедурой SetColor (цвет: word); где цвет из таблицы 1.

Пример.

SetColor(Gyan);

Line(1,1,600,1);

Для черчения линий применяются еще две процедуры: LineTo и LineRel. Процедура LineTo (x,y: integer) строит линию из точки текущего положения указателя в точку с координатами x,y. Процедура LineRel (dx,dy: integer) проводит линию от точки текущего расположения указателя (x, y) в точку x+dx, y+dy.

Турбо Паскаль позволяет вычерчивать линии самого различного стиля: тонкие, широкие, штриховые, пунктирные и т.д. Установка стиля производится процедурой SetLineStyle(a,b,c: word), где a устанавливает тип строки, возможные значения которого приведены в таблице 2; b – образец, с – толщина линии, определяемая константами, указанными в таблице 3. Если применяется один из стандартных стилей, то значение b равно 0. Если пользователь хочет активизировать собственный стиль, то значение b =4. В этом случае пользователь сам указывает примитив (образец), из которого строится линия.

Например:

SetLineStyle(1,0,1);

Line(15,15, 150,130);

или

SetLineStyle(UserBitLn,$5555,ThickWidth);

Line(15,15, 150,130);

таблица 2

Константа | Значение | Описание
SolidLn | 0 | Непрерывная линия
DottedLn | 1 | Линия из точек
CenterLn | 2 | Линия из точек и тире
DashedLn | 3 | Штриховая линия
UserBitLn | 4 | Тип пользователя

таблица 3

Константа | Значение | Описание
NormWidth | 1 | Нормальная толщина (1 пиксель)
ThickWidth | 3 | Жирная линия (3 пикселя)

Пример: Написать программу, которая вычерчивает треугольник красной линией в центре экрана.

Program treug;

uses graph; { подключение библиотеки графических процедур}

var gd,gm: integer; {описание переменных, определяющих графический драйвер и монитор}

begin

gd:=detect; {определение значений переменных по выбору ПК}

initgraph(gd, gm, ‘ c/bp’); {инициализация графического режима}

SetColor(4); {задание цвета линии}

SetLineStyle(1,0,3); {задание стиля линии}

Line(320, 240, 320, 180);

Line(320, 240, 390, 240);

Line(390, 240, 320, 180);

end.


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Построение многоугольников

Построение прямоугольников

Для построения прямоугольных фигур имеется несколько процедур. Первая из них – вычерчивание одномерного прямоугольника: Rectangle (x1, y1 , x2, y2:integer ), где x1, y1 – координаты левого верхнего угла, x2, y2- координаты правого нижнего угла прямоугольника. Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.

Более эффектные для восприятия прямоугольники можно строить с помощью процедуры Bar (x1, y1 , x2, y2:integer), которая рисует закрашенный прямоугольник. Цвет закраски устанавливается с помощью SetFillStyle. Еще одна эффектная процедура: Bar3D (x1, y1 , x2,y2, d: integer, a:boolean) вычерчивает трехмерный закрашенный прямоугольник (параллелепипед). При этом используются тип и цвет закраски, установленные с помощью SetFillStyle. Параметр d представляет собой число пикселей, задающих глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника ( d:= (x2 - x1) div 4 ). Параметр a определяет, строить над прямоугольником вершину (а:=True) или нет (a:=False).

Примеры использования:

1. SetColor(Green);

Rectangle (200, 100, 250,300);

2. SetFillStyle(1,3);

Bar(10,10,50,100);

3. SetFillStyle(1,3);

Bar3D(10,10,50,100,10,True);

Построение многоугольников

Многоугольники можно рисовать самыми различными способами, например с помощью процедуры Line. Однако в Турбо Паскале имеется процедура DrawPoly, которая позволяет строить любые многоугольники линией текущего цвета, стиля и толщины. Она имеет формат DrawPoly( a: word, var PolyPoints)

Параметр PolyPoints является нетипизированным параметром, который содержит координаты каждого пересечения в многоугольнике. Параметр а задает число координат в PolyPoints. Необходимо помнить, что для вычерчивания замкнутой фигуры с N вершинами нужно передать при обращении к процедуре DrawPoly N+1 координату, где координата вершины с номером N будет равна координате вершины с номером 1.

Проиллюстрируем на примере:

program tr; {Программа вычерчивает в центре экрана треугольник красной линией}

uses crt, graph;

var gd, gm: integer;

pp: array[1..4] of PointType;

xm, ym, xmaxD4, ymaxD4:word;

begin

gd:= detect;

Initgraph(gd, gm, ‘ c/bp’);

xm:=GetmaxX; ym:=GetmaxY;

xmaxD4:=xm div 4;

ymaxD4:= ym div 4;

{определение координат вершин}

pp[1].x := xmaxD4;

pp[1].y := ymaxD4;

pp[2].x := xm - xmaxD4;

pp[2].y := ymaxD4;

pp[3].x := xm div 2;

pp[3].y := ym - ymaxD4;

pp[4] :=pp[1];

SetColor(4); {цвет для вычерчивания}

DrawPoly(4,pp); {4 – количество пересечений +1}

readln;

CloseGraph

end.

В результате работы программы на экране появится красный треугольник на черном фоне. Изменить фон внутри треугольника можно с помощью процедуры FillPoly(a: word, var PolyPoints). Значения параметров те же, что и в процедуре DrawPоly. Действие тоже аналогично, но фон внутри многоугольника закрашивается. В качестве примера нарисуем в левой верхней части экрана четырехугольную звезду зеленого цвета:

program g;

uses crt, graph;

const

Star: array[1..18] of integer = (75, 0, 100, 50, 150, 75, 100, 100, 75, 150, 50, 100, 0, 75, 50, 50, 75, 0);

var

gd, gm: integer;

begin

gd:= detect;

initgraph(gd, gm, ‘ c/bp’);

SetFillStyle(1,2);

FillPoly(9,Star); {9 – количество пересечений + 1}

CloseGraph;

end.


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Построение дуг и окружностей

Процедура вычерчивания окружности текущим цветом имеет следующий формат:

Cicrle(x, y, r: word), где x, y – координаты центра окружности, r – ее радиус.

Например, фрагмент программы обеспечит вывод ярко-зеленой окружности с радиусом 50 пикселей и центром в точке (450, 100):

SetColor(LightGreen);

Circle(450, 100, 50);

Дуги можно вычертить с помощью процедуры Arc(x, y: integer, a, b, R:integer), где x, y- центр окружности, a, b- начальный и конечный углы в градусах, R – радиус. Для задания углов используется полярная система координат.

Цвет для вычерчивания устанавливается процедурой SetColor. В случае a=0 и b=360, вычерчивается полная окружность.

Например, выведем дугу красного цвета от 0 до 90° в уже вычерченной с помощью Circle(450, 100, 50) окружности:

SetColor(Red);

Arc(450, 100, 0, 90,50);

Для построения эллиптических дуг предназначена процедура Ellipse (x, y: integer, a, b, Rx, Ry: integer), где x, y – центр эллипса, Rx, Ry: горизонтальная и вертикальная оси. В случае a=0 и b=360 вычерчивается полный эллипс. Например, построим голубой эллипс:

SetColor(9);

Ellipse(100, 100, 0, 360, 50,50);

Фон внутри эллипса совпадает с фоном экрана. Чтобы создать закрашенный эллипс, используется специальная процедура FillEllipse (x, y: integer, Rx, Ry: integer). Закраска эллипса осуществляется с помощью процедуры SetFillStyle (a, b: word), где а – стиль закраски (таблица 4), b – цвет закраски (таблица 1). Например, нарисуем ярко-красный эллипс, заполненный редкими точками зеленого цвета:

SetFillStyle(WideDotFill, Green); { установка стиля заполнения}

SetColor(12); {цвет вычерчивания эллипса}

FillEllipse(300, 150, 50, 50);

Стандартные стили заполнения

Константа | Значение | Маска
EmptyFill | 0 | Заполнение цветом фона
SolidFill | 1 | Заполнение текущим цветом
LineFill | 2 | Заполнение символами --, цвет – color
LtslashFill | 3 | Заполнение символами // нормальной толщины, цвет – color
SlashFill | 4 | Заполнение символами // удвоенной толщины, цвет – color
BkslashFill | 5 | Заполнение символами \\ удвоенной толщины, цвет – color
LtbkSlahFill | 6 | Заполнение символами \\ нормальной толщины, цвет – color
HatchFill | 7 | Заполнение вертикально-горизонтальной штриховкой тонкими линиями, цвет – color
XhatchFill | 8 | Заполнение штриховкой крест-накрест по диагонали «редкими» тонкими линиями, цвет – color
InterLeaveFill | 9 | Заполнение штриховкой крест-накрест по диагонали «частыми» тонкими линиями, цвет – color
WideDotFill | 10 | Заполнение «редкими» точками
CloseDotFill | 11 | Заполнение «частыми» точками
UserFill | 12 | Заполнение по определенной пользователем маске заполнения, цвет – color

таблица 4

Для построения секторов можно использовать следующие процедуры:

PieSlice (x, y: integer, a, b, R: word), которая рисует и заполняет сектор круга. Координаты x, y – центр окружности, сектор рисуется от начального угла a до конечного угла b, а закрашивание происходит при использовании специальных процедур;

Sector (x, y: integer, a, b, Rx, Ry: word), которая создает и заполняет сектор в эллипсе. Координаты x, y – центр, b, Rx, Ry – горизонтальный и вертикальный радиусы, и сектор вычерчивается от начального угла a до конечного угла b.

Пример использования PieSlice:

SetFillStyle(10, 10); {установка стиля}

SetColor(12); {цвет вычерчивания}

PieSlice(100, 100, 0, 90, 50);

Пример использования Sector:

SetFillStyle(11, 9); {установка стиля}

SetColor(LightMagenta); {цвет вычерчивания}

Sector(300, 150, 180, 135, 60, 70);


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Работа с текстом

Вывод текста

Выводимые на экран изображения лучше всего сопровождать пояснительным текстом. В графическом режиме для этого используются процедуры OutText и OutTextXY.

Процедура OutText(Textst: string) выводит строку текста, начиная с текущего положения указателя. Например, OutText(‘нажмите любую клавишу’); Недостаток этой процедуры – нельзя указать произвольную точку начала вывода.

В этом случае удобнее пользоваться процедурой OutTextXY(x, y: integer, Textst: string), где x, y – координаты точки начала вывода текста, Textst – константа или переменная типа String. Например, OutTextXY(60, 100, ‘Нажмите любую клавишу’)

Вывод численных значений

В модуле Graph нет процедур, предназначенных для вывода численных данных. Поэтому для вывода чисел сначала нужно преобразовать их в строку с помощью процедуры Str, а затем подключить посредством ‘+’ к выводимой строке.

Например: Max:=34.56;

Str(Max : 6 : 2, Smax);{результат преобразования находится в Smax}

OutTextXY(400, 40, ‘Максимум=’ + Smax);

Для удобства преобразование целочисленных и вещественных типов данных в строку лучше осуществлять специализированными пользовательскими функциями IntSt и RealSt:

function IntSt(Int: integer) : string;

var Buf : string[10];

begin

Str(Int, Buf);

IntSt := Buf;

end;

function RealSt(R : real, Dig, Dec : integer) : string;

var Buf: string[20];

begin

Str(R : Dig : Dec, Buf);

RealSt := Buf;

end;

Эти функции указываются как параметры в процедурах OutText и OutTextXY. Например: x:= 5.295643871;

OutTextXY(20, 20, ‘x=’+RealSt(x,11,9));

В результате на экране появится x=5.29564443871

Шрифты

Вывод текста в графическом режиме может осуществляться различными стандартными (таблица 5) и пользовательскими шрифтами. Различают два типа шрифтов: растровые и векторные. Растровый шрифт задается матрицей точек, а векторный – рядом векторов, составляющих символ.

По умолчанию после инициализации графического режима устанавливается растровый шрифт DefaultFont, который, как правило, является шрифтом, используемым драйвером клавиатуры.

Стандартные шрифты

Шрифт | Файл
TriplexFont | Trip.chr
SmallFont | Litt.chr
SansSerifFont | Sans.chr
GothicFont | Goth.chr

таблица 5

Большинство стандартных шрифтом не содержат русских символов. Разработка же собственных шрифтов – довольно сложный и трудоемкий процесс. Он может быть ускорен, если воспользоваться специализированными пакетами TurboFont, BgiToolKit.

Установить нужный шрифт можно процедурой SetTextStyle(Font,d,c:word), где Font – выбранный шрифт, d – направление ( горизонтальное или вертикальное), с – размер выводимых символов. Возможные значения двух первых параметров представлены в таблице 5. При организации вертикального вывода необходимо учитывать, что если не установить точку начала вывода с помощью MoveTo, то текст начинается с нижней строки экрана и продолжается вверх. Величина символов устанавливается коэффициентом с. Если с=1, то символ строится в матрице 8´8, если с= 2, то матрица 16´16 и т.д. до 10-кратного увеличения.

Например выведем 2 строки (вертикальную и горизонтальную) шрифтом DefaultFont разной величины:

SetTextStyle(0,11); {буквы стандартной величины}

OutTextXY(200,200, ‘Вертикальная строка’);

SetTextStyle(0,0,2); {размер букв увеличен}

OutTextXY(200,220, ‘Горизонтальная строка’);

Выравнивание текста

В некоторых случаях требуется в пределах одной строки выводить символы выше или ниже друг друга. Выравнивание текста выполняется с помощью процедуры SetTextJustify(Horiz, Vert : word) как по вертикали, так и по горизонтали посредством задания параметров Horiz и Vert (возможные значения в таблице 6).

Параметры выравнивания

Параметр | Значение | Комментарий
Горизонтальное выравнивание
LeftText | 0 | Выровнять влево
CenterText | 1 | Центрировать
RightText | 2 | Выровнять вправо
Вертикальное выравнивание
BottomText | 0 | Переместить вниз
CenterText | 1 | Центрировать
TopText | 2 | Переместить вверх

таблица 6

В качестве примера выведем x2:

SetTextJustify(1, 1);

OutTextXY(100,100, ‘X’);

SetTextJustify(1, 0);

OutTextXY(108,100, ‘2’);


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Построение графиков функций

Для построения графиков функций при помощи графического режима предполагается свободное владение учениками понятием функции, ее графическим и аналитическим представлением. Необходимо также использовать операторы цикла, которые помогут избежать однообразного труда по вычислению ординаты каждой точки.

До сих пор при создании рисунков использовали только первый квадрант системы координат. Для построения большинства функций в требуемом интервале изменения необходимо работать хотя бы в двух квадрантах. В общем случае полезно изображать систему координат в любой части плоскости, но наиболее наглядно располагать ее в центре экрана. В таких случаях, установив начало координат в точке (x0, y0) на экране, можно координаты (x, y) произвольной точки кривой определять разностью (x-x0, y-y0). После этого в программе можно употреблять не только положительные, но и отрицательные значения.

Рисунок получается маленьким, поэтому требуется увеличить масштаб изображения. Если для функции будет использован весь экран, надо увеличить рисунок по x и по y в зависимости от выбранного экрана.

Выбрать масштаб увеличения можно следующим образом:

-определить горизонтальный и вертикальный размеры графика (для этого вводятся границы области значений и определяются максимальное и минимальное значение функции на заданной области определения, затем вычисляются разности максимального и минимального значений аргументов и функции, которые и являются горизонтальным и вертикальным размерами графика соответственно);

-определить масштаб (сначала определяются масштабы изображения по горизонтали и вертикали с учетом размеров выбранного экрана по формуле:

масштаб(г/в) = размер экрана (по г/в) / размер графика (по г/в), затем из них выбирается меньший, который и принимается за необходимый масштаб. В нашем случае графический экран имеет размеры 640 на 480.

В любом случае, чтобы высветить на экране точку, надо взять x, вычислить по данной абсциссе y и выполнить рисование точки. Так как на экране можно получить лишь ограниченное количество значений х, то их перебираем с помощью цикла.

Пример. Построить график функции y=x2

Вариант 1

program f;

uses graph;

var gd, gm: integer;

x, y: real;

begin

gd:= detect;

initgraph( gd, gm, ‘c/ bp’);

SetColor(5);

Line(0, 240, 640, 240);

Line(320, 0, 320, 480);

x:= -20;

While x<=20 do

begin

y:= -Sqr(x);

PutPixel( x *5 + 320, y*5 +240, 15);

x:=x + 0.01;

end;

end.

Вариант 2

program f;

uses graph, crt;

var gd, gm: integer;

x, y, mx, my, m,x1, x2, y1, y2,h: real;

function f(x:real): real;

begin

f:= Sqr(x);

end;

clrscr;

Write(‘Введите границы отрезка’);

Read(x1, x2);

y1:=f(x1); y2:=f(x2);

mx:=640 /(x2 –x1);

my:=480 / (y2 – y1);

If mx< my Then m:=mx

else m:= my;

h:= 1/m; x:=x1;

gd:= detect;

initgraph(gd, gm, ‘c/ bp’);

SetColor (5);

Line(0, 240, 640, 240);

Line(320, 0, 320, 480);

While x<= x2 do

begin

y:= -f(x);

PutPixel(x *m +320, y*m +240, 15);

x:= x+ h;

end;

end.

Рассмотрим построение графика функции, заданной параметрически. В отличие от функции, заданной в явном виде y=f(x), параметр х в этом случае также является функцией, зависящей от некоторого значения.

Пример.

Построить график функции (кардиоида)

x = a cos t ( 1+ cost), y = a sin t( 1+cost), a > 0, t Î [0, 2p )

Приведем фрагмент программы:

SetColor (5);

Line(0, 240, 640, 240);

Line(320, 0, 320, 480);

t:=0; a:=3;

While t<= 3.1415 do

begin

x:=a*cos(t)*(1+cos(t));

y:= - a sin(t)*(1+cos(t));

PutPixel(x*5 +320, y*5 +240, 15);

x:= x+ 0.01;

end;


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Циклы в графике. Построение случайных процессов

Для того, чтобы картинки не были монотонными и регулярными, можно задавать фигурам случайные размеры, цвет, координаты. Для этого имеется специальная функция Random. Она генерирует случайные числа из [0, 1). Для расширения первоначального промежутка используется функция Random(I: word), которая выдает число из диапазона 0… I. На самом деле эти функции генерируют некоторую последовательность псевдослучайных чисел, и чтобы добиться иллюзии полной «случайности» используют команду Randomize, которая изменяет базу датчика случайных чисел.

Пример. Нарисовать в случайном месте экрана точку случайного цвета

Фрагмент программы:

Randomize

x:=random(640); y:=Random(480); c:=Random(15);

PutPixel(x, y, c);

Пример. Нарисовать 5000 точек случайного цвета в случайном месте.

Фрагмент программы:

For i:=1 to 5000 do

begin

x:=Random(640); y:=Random(480); c:=Random(15);

PutPixel(x, y, c);

end;


Изучаем Pascal с нуля

Глава 6. Графика в системе Турбо Паскаль

Создание иллюзии движения

Создать видимость движения изображения на экране можно несколькими способами. Рассмотрим два из них.

I способ. Имитация движения объекта на экране за счет многократного выполнения программой набора действий: нарисовать – пауза – стереть (нарисовать в том же месте цветом фона) – изменить координаты положения рисунка.

Перед началом составления программы надо продумать описание «двигающегося» объекта, характер изменения координат, определяющих текущее положение объекта, диапазон изменения и шаг.

Упражнение 1. Изучить текст программы, которая рисует модель атома. Проверить ее действие.

program Model_At;

uses Crt, Graph;

const

Ra=100;{радиус атома}

Rc=10; {радиус ядра}

Re=4; {радиус электрона}

k=0.5; {коэффициент сжатия орбит электронов}

Dr=30; {параметр изменения координат электрона}

Step1=0.2; {шаг изменения положения электрона}

Step=100; {время задержки – скорость движения электронов}

var

cx, cy, y, y1, y2, x, x1, x2, x3, y3:integer;

I, I1, I2, I3: real; gd, gm: integer;

begin

clrscr;

gd:=detect; initgraph(gd, gm, ‘путь к драйверу’);

SetTextStyle(0, 0, 2); OutTextXY(200, 30, ‘Модель атома’);

cx:= GetMaxX div 2; {определить центр экрана- положение ядра}

cy:= GetMaxY div 2;

PieSlice(cx, cy, 0, 360, Rc);{нарисовать ядро атома}

SetColor(Red); SetLineStyle(0, 0, 3);

Line(cx-7, cy, cx+7, cy); Line(cx, cy-5, cx, cy+5);

SetLineStyle(0,0,1); SetFillStyle(1, 1);

I:=Pi/4; {задать начальное положение 4 электронов}

I1:= - Pi/4; I2:= - Pi/2; I3:= Pi/2;

SetTextStyle(0, 0, 1);SetColor(jellow);

OutTextXY(180, 420,’Для отмены нажмите любую клавишу’);

While not KeyPressed do {повторять, пока не нажата любая клавиша }

begin

{ определить координаты электронов}

x:=Round (Ra*cos(I)) +cx; Y:= Round (k+Ra*sin(I)) +cy;

x1:= Round((Ra+Dr)*cos(I1)) +cx; y1:= Round (k*(Ra+Dr)*sin(I1)) +cy;

x2:= Round((Ra-Dr)*cos(I2)) +cx; y2:= Round (k*(Ra-Dr)*sin(I2)) +cy;

x3:= Round((Ra-Dr)*cos(I3)*2.3) +cx; y3:= Round (k*(Ra-Dr)*sin(I3)*2.3) +cy;

{установить синий цвет и нарисовать электроны}

SetColor(1);

Circle (x, y, Re); PutPixel(x, y, 2);

Circle (x1, y1, Re); PutPixel(x1, y1, 2);

Circle (x2, y2, Re); PutPixel(x2, y2, 2);

Circle (x3, y3, Re); PutPixel(x3, y3, 2);

Delay(Step);

{нарисовать электроны цветом фона}

SetColor(0);

Circle (x, y, Re); PutPixel(x, y, 2);

Circle (x1, y1, Re); PutPixel(x1, y1, 2);

Circle (x2, y2, Re); PutPixel(x2, y2, 2);

Circle (x3, y3, Re); PutPixel(x3, y3, 2);

{задать изменение положения электронов}

I:=I + Step1; I1:=I1 – Step1; I2:=I2 + Step1; I3:=I3 + Step1;

end; {конец цикла}

CloseGraph;

end.

II способ. Иллюзия движения создается при помощи специальных процедур и функций.

Функция ImageSize(x1, y1, x2, y2: integer):word возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения, где x1,y1 – координаты левого верхнего и x2, y2 – правого нижнего углов фрагмента изображения.

Процедура GetImage(x1, y1, x2, y2:integer, var Buf) помещает в память копию прямоугольного фрагмента изображения, где x1, ..,y2 – координаты углов фрагмента изображения, Buf – специальная переменная, куда будет помещена копия видеопамяти с фрагментом изображения. Buf должна быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами.

Процедура PutImage(x1, y1, x2, y2:integer, var Buf, Mode:word) выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage. X, Y – координаты левого верхнего угла того места на экране, куда будет скопирован фрагмент изображения; Buf –специальная переменная, откуда берется изображение, Mode – способ копирования. Координаты правого нижнего угла не указываются, так как они полностью определяются размерами выводимой на экран копии изображения. Координаты левого верхнего угла могут быть любыми, лишь бы только копия уместилась в пределах экрана (если копия не размещается на экране, то она не выводится , и экран остается без изменений). Параметр Mode определяет способ взаимодействия размещаемой с уже имеющимся на экране изображением ( табл. 7)

Константа | Значение | Операция | Пояснения
NormalPut | 0 | Замена существующего на копию | Стирает часть экрана и на это место помещает копию
XorPut | 1 | Исключительное или | Рисует сохраненный образ или стирает ранее нарисованный, сохраняя фон
OrPut | 2 | Объединительное или | Накладывает сохраненный образ на существующий
AndPut | 3 | Логическое и | Объединяет сохраненный образ и уже существующий на экране
NotPut | 4 | Инверсия изображения | То же самое, что и 0, только копия выводится в инверсном виде

Упражнение 2. Изучить программу, которая рисует звездное небо и перемещает на его фоне рисунок НЛО. Проверить действие программы.

program NLO;

uses crt, graph;const

k=20; Pause=50;

var

gd, gm, xmin, xm, ymin, ym, x, y, tx, ty, rx, ry, size, i, dx, dy, width, height: integer;

sauser:Pointer;

begin

Randomize;

gd:= detect; initgraph(gd, gm, ‘путь к драйверу’);

SetTextStyle(0, 0, 2); OutTextXY(50, 10, ‘Демонстрация движения НЛО’);

{Рисуем НЛО}

x:=R*5;
y:=R*2;
xm:=GetmaxX-
5; ym:=GetmaxY-25;

Ellipse(x, y, 0, 360, R, R div 3+2);

Ellipse(x, y-4, 190, 357, R, R div 3);

Line(x + 7, y - 6, x + 10, y - 12);

Line(x -7, y - 6, x + 10, y - 12);

Circle(x + 10, y - 10, 2);

Circle(x -10, y - 10, 2);

FloodFill(x+1, y+4, White);

{определяем габариты НЛО и помещаем в специальную динамическую переменную}

Tx:= x-R; Ty:=y-14; Rx:;=x+R; Ry:=y+R div3 +3;

Width:=Rx-Tx+1; Size:=ImageSize(Tx, Ty, Rx, Ry);

GetMem(sauser, Size);

GetImage(Tx, Ty, Rx, Ry, sauser^);

{стираем построенное изображение}

PutImage(Tx, Ty, sauser^, XorPut);

{рисуем звездное небо}

SetStyle(1, blue); {установить стиль и цвет закраски голубое небо}

SetColor(White);

{начертить прямоугольник и открыть окно}

Rectangle(xmin, ymin, GetmaxX, GetmaxY);

SetViewPort(xmin, ymin, GetmaxX, GetmaxY, ClipOn);

FloodFill(xmin+1, ymin+1, White);

For i:=1 to 500 do {нарисовать 500 звезд белого цвета}

PutPixel(Random(GetmaxX), Random(GetmaxY- ymin), 15);

{задаем начальное положение НЛО}

x:=xm div 3 – xmin; y:=ym div 3 – ymin; dx:=6; dy:=6;

Repeat {цикл: повторять, пока не нажата любая клавиша}

PutImage(x, y, sauser^, XorPut); {изображаем объект}

Delay (Pause);{ задержка}

PutImage(x, y, sauser^, XorPut); {после паузы стираем объект}

{перемещаем объект}

If (x<xmin) Or (y<ymin) Or (x+Width +1> xm) Or (y+Height +1> ym) Then

begin {если объект смещается влево-вверх за границы окна, изменить координаты так, чтобы он оставался в окне}

If (x- Dx< xmin) then x:= xmin else x := x- Dx;

If (y- Dy< ymin) then y:= ymin else y := y- Dy;

Dx:= GetmaxX div 10 - Random(GetmaxX div 4);

Dy:= GetmaxY div 10 - Random(GetmaxY div 4);

end

else

begin { если объект смещается вправо-вниз за границы окна, изменить координаты так, чтобы он оставался в окне}

If (x + Dx< xm) then x:= x + Dx else x:= Random(GetmaxX) - Random(GetmaxX div 4);

If (y + Dy< ym) then y:= y + Dy else y:= Random(GetmaxY) - Random(GetmaxY div 3);

end;

until KeyPressed; {завершить, как только будет нажата клавиша }

FreeMem (sauser, Size);

Closegraph;

end;

end.

Задание: В любую из этих программ добавить свой «движущийся» объект.


Изучаем Pascal с нуля

Глава 3. Процедуры и функции

Процедуры

Для использования подпрограммы-процедуры необходимо сначала описать процедуру, а затем обращаться к ней (обращение к процедуре – отдельный оператор). Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, имени процедуры и, заключенного в скобки, списка формальных параметров с указанием типа. Название «формальные» эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы процедуры, а при вызове подпрограммы на их место будут поставлены конкретные значения. Тело процедуры – блок, по структуре аналогичный программе.

При создании программ, использующих процедуры, следует учитывать, что все объекты, которые описываются после заголовка в теле процедуры, называются локальными объектами и доступны только в пределах этой процедуры.

Все объекты, описанные в вызывающей программе, называются глобальными и являются доступными внутри процедур, вызываемых этой программой.

Общий вид описания процедуры:

Procedure <имя> (список формальных параметров, блок описания);

Const …; ù

… ý блок описания

Var ….; û

begin

<операторы>

end;

Пример 1. Вывести по четырем углам экрана свое имя цветными буквами, можно с эффектом мерцания.

Program names;

Uses crt;

Procedure name(x, y, c: byte, );

Begin

Gotoxy (x, y);

Textcolor(c); {textcolor (c+16);}

Write(‘Имя’);

end;

begin

Clrscr; {очистка экрана}

name (2,2, 14);

name (2, 22, 8);

name (75,2, 3);

name (75, 22, 5);

End.

Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел.

Program max;

Uses crt;

Var a, b, c, d, m, p, q:real;

Procedure Bd(x,y:real, var z: real);

Begin

If x>y then z:=x

else z:=y;

end;

begin

Clrscr; {очистка экрана}

Write(‘Введите числа’);

Readln(a,b,c,d);

Bd (a, b, p);

Bd (c, d, q);

Bd (p, q, m);

Writeln(‘наибольший элемент’, m:8:3);

End.


Изучаем Pascal с нуля

Полный обучающий курс Turbo Pascal

Глава 1. Основные понятия системы программирования Турбо Паскаль

1.1. Алфавит и словарь языка Паскаль

1.1.1. Величины в Паскале

1.1.2. Структура программы

1.2. Типы данных

1.2.1. Целочисленные типы данных

1.2.2. Вещественные типы данных

1.2.3. Символьный тип

1.2.4. Логический тип

1.3. Арифметические операции и стандартные функции

1.4. Ввод и вывод данных

1.4.1. Ввод данных с клавиатуры

1.4.2. Вывод данных

Глава 2. Операторы языка Паскаль

2.1. Общие сведения

2.2.1. Оператор присваивания

2.2.2. Оператор вызова процедуры

2.2.3. Оператор безусловного перехода

2.2.4. Пустой оператор

2.3. Структурные операторы

2.3.1. Составной оператор

2.3.2. Условные операторы

2.3.3. Операторы повтора (цикла)

Глава 3. Процедуры и функции

3.1. Стандартные библиотечные модули

3.2. Процедуры

3.3. Функции

Глава 4. Массивы

4.1. Одномерные массивы

4.2. Двумерные массивы

Глава 5. Строковые величины

5.1. Символьные величины

5.2. Строковые величины

Глава 6. Графика в системе Турбо Паскаль (скачать главу)

6.1. Общие сведения

6.1.1. Базовые процедуры и функции

6.1.2. Экран и окно в графическом режиме

6.2.1. Вывод простейших фигур

6.2.2. Построение многоугольников

6.2.3. Построение дуг и окружностей

6.2.4. Работа с текстом

6.2.5. Построение графиков функций

6.2.6. Циклы в графике. Моделирование случайных процессов

6.2.7. Создание иллюзии движения


Лекции

Лекции Turbo Pascal


Pasckal

Главная Учебник Тест

Лабораторная работа№1

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24 Вариант№25

Вариант№1
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v1;
Uses crt;
var r,b,c:real;
Begin
Clrscr;
Writeln('Введите радиус круга:');
Readln(r);
b:=2*3.14*r;
Writeln('Периметр круга:');
Writeln(b:4:2);
c:=2*3.14*sqr(r);
Writeln('Площадь круга:');
Writeln(c:4:2);
Readln;
end.

Вверх

Вариант№2
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v2;
Uses crt;
var a,b,s,p,c:real;
Begin
Clrscr;
Writeln('Введите первый катет:');
Readln(a);
Writeln('Введите второй катет:');
Readln(b);
s:=0.5*a*b;
Writeln('Площадь треугольника:');
Writeln(s:4:2);
c:=sqrt(sqr(a)+sqr(b));
p:=c+a+b;
Writeln('Периметр треугольника:');
Writeln(p:4:2);
Readln;
end.

Вверх

Вариант№3
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v3;
Uses crt;
var a,b,s,p,d:real;
Begin
Clrscr;
Writeln('Введите диаметр круга:');
Readln(d);
s:=3.14*(sqr(0.5*d));
Writeln('Площадь круга:');
Writeln(s:4:2);
p:=2*3.14*(0.5*d);
Writeln('Периметр круга:');
Writeln(p:4:2);
Readln;
end.

Вверх

Вариант№4
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v4;
Uses crt;
var a,b,s,p,h,c,x:real;
Begin
Clrscr;
Writeln('Введите малое основание трапеции:');
Readln(a);
Writeln('Введиет большое основание трапеции:');
Readln(b);
Writeln('Введите боковую сторону:');
Readln(c);
x:=(b-a)/2;
h:=sqrt(sqr(c)-sqr(x));
p:=a+b+c+c;
Writeln('Периметр трапеции:');
Writeln(p:4:2);
s:=((a+b)/2)*h;
Writeln('Площадь трапеции:');
Writeln(s:4:2);
Readln;
end.

Вверх

Вариант№5
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v5;
Uses crt;
var a,b,c,d,m1,m2,m3,s:real;
Begin
Clrscr;
Writeln('масло-48.60руб. за кг.');
Writeln('сметана-12.80руб. за кг.');
Writeln('сливки- 24.60руб. за кг.');
Writeln('Введите необходимую массу масла:');
Readln(a);
Writeln('Введите необходимую массу сметаны:');
Readln(b);
Writeln('Введите необходимую массу сливок:');
Readln(c);
Writeln('Введите колличество дней:');
Readln(d);
m1:=a*48.60;
m2:=b*12.80;
m3:=c*24.60;
s:=m1+m2+m3;
Writeln('Необходимое колличество денег на каждый продукт:');
Write('Масло:');
Writeln(m1:2:2);
Write('Сметана:');
Writeln(m2:2:2);
Write('Сливки:');
Writeln(m3:2:2);
Write('Сумма:');
Writeln(s:2:2);
Readln;
end.

Вверх

Вариант№6
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v6;
Uses crt;
var m,h,s,n,g:real;
Begin
Clrscr;
m:=60;
h:=m*60;
s:=h*24;
n:=s*7;
g:=s*365;
Writeln('Колличество секунд:');
Write('в сутках:');
Writeln(s:2:0);
Write('в неделе:');
Writeln(n:2:0);
Write('в году: ');
Writeln(g:2:0);
Readln;
end.

Вверх

Вариант№7
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v7;
Uses crt;
var m,h,v,e,p:real;
Begin
Clrscr;
Writeln('Введите массу:');
Readln(m);
Writeln('Введите высоту:');
Readln(h);
Writeln('Введите скорость:');
Readln(v);
e:=(m*sqr(v))/2;
Writeln('Кинетическая энергия:');
Writeln(e:4:2);
p:=m*9.8*h;
Writeln('Потенциальная энергия:');
Writeln(p:4:2);
Readln;
end.

Вверх

Вариант№8
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v8;
Uses crt;
var a,b,p,a2,b2,x,y:real;
Begin
Clrscr;
Writeln('Введите цену первого товара:');
Readln(a);
Writeln('Введите цену второго товара:');
Readln(b);
Writeln('Введите процент изменения цены:');
Readln(p);
x:=(a*p)/100;
a2:=a+x;
y:=(b*p)/100;
b2:=b+x;
Write('Новая цена первого товара:');
Writeln(a2);
Write('Новая цена второго товара:');
Writeln(b2);
Readln;
end.

Вверх

Вариант№9
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v9;
Uses crt;
var r,s,v:real;
Begin
Clrscr;
Writeln('Введите радиус сферы:');
Readln(r);
s:=4*3.14*sqr(r);
Writeln('Площадь поверхности сферы:');
Writeln(s:4:2);
v:=4*3.14*((sqr(r))*r);
Writeln('Объем сферы:');
Writeln(v:1:2);
Readln;
end.

Вверх

Вариант№10
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v10;
Uses crt;
var r,s:longint; v:real;
Begin
Clrscr;
Writeln('Скорость света:');
Writeln('299792 км/с');
Writeln('Высота достигпутая светом через час:');
Writeln('107925120 км');
Writeln('Высота достигнутая светом через день:');
Writeln('2590202880 км');
Readln;
end.

Вверх

Вариант№11
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v11;
Uses crt;
var a,b,c,x,y,z,s:real;
Begin
Clrscr;
Writeln('Урожайность пшеницы:');
Writeln('1 сорт-36 т/га ');
Writeln('2 сорт-40 т/га ');
Writeln('3 сорт-44 т/га ');
Writeln('Введите размер 1-го поля (в га.):');
Readln(a);
Writeln('Введите размер 2-го поля (в га.):');
Readln(b);
Writeln('Введите размер 3-го поля (в га.):');
Readln(c);
x:=a*36;
y:=b*40;
z:=c*44;
s:=a+b+c;
Write('Собрали с первого поля: ');
Writeln(x:2:0);
Write('Собрали с второго поля::');
Writeln(y:2:0);
Write('Собрали с третьего поля:: ');
Writeln(z:2:0);
Writeln('_____________________');
Write('Всего с трех полей:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№12
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v12;
Uses crt;
var r,s,v:real;
Begin
Clrscr;
Writeln('Радиус месяца: 1740км.');
s:=4*3.14*sqr(1740);
Write('Площадь поверхности месяца:');
Writeln(s:4:2);
Write('Объем планеты:22055460480');
Readln;
end.

Вверх

Вариант№13
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v13;
Uses crt;
var a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите катет b:');
Readln(b);
c:=sqrt(sqr(a)+sqr(b));
s:=(a+b)/2;
Write('Гипотенуза:');
Writeln(c:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№14
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v14;
Uses crt;
var a,s,v:real;
Begin
Clrscr;
Writeln('Введите длину ребра куба:');
Readln(a);
s:=4*sqr(a);
v:=a*a*a;
Write('Площадь бокоой поверхности куба:');
Writeln(s:2:0);
Write('Объем куба:');
Writeln(v:2:0);
Readln;
end.

Вверх

Вариант№15
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v15;
Uses crt;
var t1,t2,t3,c,a,b,e,m:real;
Begin
Clrscr;
Writeln('Введите продуктивность 1-ой трубы за час:');
Readln(t1);
Writeln('Введите продуктивность 2-ой трубы за час:');
Readln(t2);
Writeln('Введите продуктивность 3-ей трубы за час:');
Readln(t3);
Writeln('Введите колличество часов сколько будут раблтать трубы:');
Readln(c);
a:=t1*c;
b:=t2*c;
e:=t3*c;
m:=a+b+e;
Write('Продуктивность 1-ой трубы:');
Writeln(a:2:0);
Write('Продуктивность 2-ой трубы:');
Writeln(b:2:0);
Write('Продуктивность 3-ей трубы:');
Writeln(e:2:0);
writeln('___________________');
Write('Всего с трех труб:');
Writeln(m:2:0);
Readln;
end.

Вверх

Вариант№16
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v16;
Uses crt;
var r,d,a,s,p,Sk:real;
Begin
Clrscr;
Writeln('Введите площадь круга вписанного в квадрат:');
Readln(s);
r:=sqrt(s/3.14);
d:=2*r;
a:=d/(sqrt(2));
p:=4*a;
Sk:=sqr(a);
Write('Периметр квадрата описанного вокруг круга:');
Writeln(p:2:0);
Write('Площадь квадрата описанного вокруг круга:');
Writeln(Sk:2:0);
Readln;
end.

Вверх

Вариант№17
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v17;
Uses crt;
var g,t1,t2,h1,h2:real;
Begin
Clrscr;
Writeln('Введите ускорение с которым падает тело:');
Readln(g);
t1:=1;
t2:=2;
h1:=(g*sqr(t1))/2;
h2:=(g*sqr(t2))/2;
Write('Путь пройденный телом после 1-ой секунды падения:');
Writeln(h1:2:0);
Write('Путь пройденный телом после 2-ой секунды падения:');
Writeln(h2:2:0);
Readln;
end.

Вверх

Вариант№18
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v18;
Uses crt;
var p,a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите катет b:');
Readln(b);
c:=sqrt(sqr(a)+sqr(b));
s:=(a+b)/2;
p:=a+b+c;
Write('Периметр треугольника:');
Writeln(p:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№19
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v19;
Uses crt;
var t1,t2,t3,c1,c2,c3,a,b,e,s:real;
Begin
Clrscr;
Writeln('Введите стоимость разговора с населенным путктом №1:');
Readln(c1);
Writeln('Введите стоимость разговора с населенным путктом №2:');
Readln(c2);
Writeln('Введите стоимость разговора с населенным путктом №3:');
Readln(c3);
Writeln('Введите время разговора с населенным пунктом №1:');
Readln(t1);
Writeln('Введите время разговора с населенным пунктом №2:');
Readln(t2);
Writeln('Введите время разговора с населенным пунктом №3:');
Readln(t3);
a:=c1*t1;
b:=c2*t2;
e:=c3*t3;
s:=a+b+e;
Write('Стоимость разговора с населенным пунктом №1:');
Writeln(a:2:0);
Write('Стоимость разговора с населенным пунктом №2:');
Writeln(b:2:0);
Write('Стоимость разговора с населенным пунктом №3:');
Writeln(e:2:0);
writeln('_________________________');
Write('Сумма за все разговоры:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№20
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v20;
Uses crt;
var r,s,v,h:real;
Begin
Clrscr;
Writeln('Введите радиус основания:');
Readln(r);
Writeln('Введите высоту:');
Readln(h);
s:=2*3.14*r*h;
v:=3.14*sqr(r)*h;
Writeln('Площадь боковой поверхности:');
Writeln(s:4:2);
Writeln('Объем дуги:');
Writeln(v:1:2);
Readln;
end.

Вверх

Вариант№21
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v21;
Uses crt;
var a,s,p:real;
Begin
Clrscr;
Writeln('Введите сторону квадрата:');
Readln(a);
s:=sqr(a);
p:=4*a;
Writeln('Площадь квадрата:');
Writeln(s:4:2);
Writeln('Периметр квадрата:');
Writeln(p:1:2);
Readln;
end.

Вверх

Вариант№22
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v22;
Uses crt;
var p,a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите гипотенузу:');
Readln(c);
b:=sqrt(sqr(c)-sqr(a));
s:=(a+b)/2;
Write('Катет b:');
Writeln(b:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№23
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v23;
Uses crt;
var a,d,s:real;
Begin
Clrscr;
Writeln('Введите диогональ квадрата:');
Readln(d);
a:=d/(sqrt(2));
s:=(sqr(d))/2;
Write('Сторона квадрата:');
Writeln(a:2:0);
Write('Площадь квадрата:');
Writeln(s:2:0);
Readln;
end.

Вверх

Вариант№24
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v24;
Uses crt;
var h,l,r,s,v:real;
Begin
Clrscr;
Writeln('Введите высоту конуса:');
Readln(h);
Writeln('Введите длину конуса:');
Readln(l);
Writeln('Введите радиус конуса:');
Readln(r);
v:=(3.14*sqr(r)*h)/3;
s:=3.14*r*l;
Write('Площадь конуса:');
Writeln(s:2:0);
Write('Объем конуса:');
Writeln(v:2:0);
Readln;
end.

Вверх

Вариант№25
текст задания текст задания текст задания текст задания текст задания текст задания текст задания текст задания

Program lab1v25;
Uses crt;
var t1,t2,t3,v1,v2,v3,a,b,e,s:real;
Begin
Clrscr;
Writeln('Введите скорость пути №1:');
Readln(v1);
Writeln('Введите скорость пути №2:');
Readln(v2);
Writeln('Введите скорость пути №3:');
Readln(v3);
Writeln('Введите время пути №1:');
Readln(t1);
Writeln('Введите время пути №2:');
Readln(t2); Writeln('Введите время пути №3:');
Readln(t3);
a:=v1*t1;
b:=v2*t2;
e:=v3*t3;
s:=a+b+e;
Write('Расстояние пути №1:');
Writeln(a:2:0);
Write('Расстояние пути №2:');
Writeln(b:2:0);
Write('Расстояние пути №3:');
Writeln(e:2:0);
writeln('________________');
Write('Общий путь:');
Writeln(s:2:0);
Readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№2

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24 Вариант№25

Вариант№1
1. Ввести номер студента из списка. Вывести его фамилию.
Program lab2v1;
Uses crt;
var i:integer;
Begin
Clrscr;
Readln(i);
case i of
1: Writeln('Иванов');
2: Writeln('Петров');
3: Writeln('Сидоров');
4: Writeln('Васичкин');
else
Writeln('В списке всего 4 студента!');
end;
Readln;
end.

Вверх

Вариант№2
2. Есть данные про автомобили 4 моделей, как входные данные ввести номер модели и получить характеристики:
год выпуска и цену.

Program lab2v2;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Если желаете узнать год выпуска и пробег предложенных моделей автомобилей:');
Writeln('ВАЗ 2112;2113;2114;2115');
Readln(i);
case i of
2112: Writeln('2000 Ј. пробег: 44 526');
2113: Writeln('2001 Ј. пробег: 33 546');
2114: Writeln('2002 Ј. пробег: 46 531');
2115: Writeln('2003 Ј. пробег: 21 345');
else
Writeln('В списке всего 4 модели!');
end;
Readln;
end.

Вверх

Вариант№3
3. Ввести номер поезда. Вывести название пункта прибытия.
Program lab2v3;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Утром отправляется 4 поезда');
Writeln('Если хотите узнать куда они прибудут введите номер поезда');
Readln(i);
case i of
1: Writeln('Москва');
2: Writeln('Воронеж');
3: Writeln('Белгород');
4: Writeln('Кумертау');
else
Writeln('В списке отправления всего 4 поезда!');
end;
Readln;
end.

Вверх

Вариант№4
4. Ввести 1 букву названия страны. Вывести название его столицы.

Program lab2v4;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите 1-ю букву страны предложенную вам:');
Writeln('Америка, Россия, Япония, Франция.');
Readln(i);
case i of
1: Writeln('Вашингтон');
2: Writeln('Москва');
3: Writeln('Токио');
4: Writeln('Париж');
else
Writeln('В списке всего 4 страны!');
end;
Readln;
end.

Вверх

Вариант№5
5. Ввести номер дня недели. Вывести его название.
Program lab2v5;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер дня недели');
Readln(i);
case i of
1: Writeln('Понедельник');
2: Writeln('Вторник');
3: Writeln('Среда');
4: Writeln('Четверг');
5: Writeln('Пятница');
6: Writeln('Суббота');
7: Writeln('Воскресенье');
else
Writeln('В неделе всего 7 дней!');
end;
Readln;
end.

Вверх

Вариант№6
6. Ввести номер трамвая. Вывести название его конечных остановок.
Program lab2v6;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер трамвая');
Readln(i);
case i of
1: Writeln('ул.Лесная');
2: Writeln('ул.Ленина');
3: Writeln('ул.Энергетиков');
4: Writeln('ул.Чехова');
else
Writeln('В списке всего 4 трамвая!');
end;
Readln;
end.

Вверх

Вариант№7
7. Ввести первую букву названия страны.
Вывести название континента.
Program lab2v7;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите первую букву страны');
Readln(i);
case i of
1: Writeln('Австралия');
2: Writeln('Евразия');
3: Writeln('Африка');
4: Writeln('Южная Америка');
else
Writeln('В списке всего 4 страны!');
end;
Readln;
end.

Вверх

Вариант№8
8. Ввести номер месяца. Вывести название пары года.

Program lab2v8;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер месяца');
Readln(i);
case i of
12,1,2: Writeln('Зима');
3,4,5: Writeln('Весна');
6,7,8: Writeln('Лето');
9,10,11: Writeln('Осень');
else
Writeln('В году всего 12 месяцев!');
end;
Readln;
end.

Вверх

Вариант№9
9. Ввести номер студента в списке. Вывести его имя.

Program lab2v9;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер студента в списке');
Readln(i);
case i of
1: Writeln('Ваня');
2: Writeln('Саша');
3: Writeln('Коля');
4: Writeln('Петя');
else
Writeln('В списке всего 4 стедента!');
end;
Readln;
end.

Вверх

Вариант№10
10. Ввести 1 букву названия города. Вывести справку
про количество населения.
Program lab2v10;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите 1-ю букву названия города');
Readln(i);
case i of
1: Writeln('70 тыс.чел.');
2: Writeln('1.5 млн.чел.');
3: Writeln('154 тыс.чел.');
4: Writeln('445 тыс.чел.');
else
Writeln('В списке всего 4 города!');
end;
Readln;
end.

Вверх

Вариант№11
11. Ввести номер месяца. Вывести номер квартала.

Program lab2v11;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер месяца');
Readln(i);
case i of
1,2,3: Writeln('1 квартал');
4,5,6: Writeln('2 квартал');
7,8,9: Writeln('3 квартал');
10,11,12: Writeln('4 квартал');
else
Writeln('В году всего 12 месяцев!');
end;
Readln;
end.

Вверх

Вариант№12
12. Ввести номер автобуса. Вывести количество
остановок данного маршрута.
Program lab2v12;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер автобуса');
Readln(i);
case i of
1: Writeln('1 остановка');
2: Writeln('2 остановка');
3: Writeln('3 остановка');
4: Writeln('4 остановка');
else
Writeln('В списке всего 4 автобуса!');
end;
Readln;
end.

Вверх

Вариант№13
13. Ввести название страны. Вывести количество
городов в этой стране.
Program lab2v13;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите название страны');
Readln(i);
case i of
1: Writeln('456');
2: Writeln('654');
3: Writeln('487');
4: Writeln('455');
else
Writeln('В списке всего 4 страны!');
end;
Readln;
end.

Вверх

Вариант№14
14. Ввести телефонный код города. Вывести название города.

Program lab2v14;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите телефонный код города');
Readln(i);
case i of
1: Writeln('Кумертау');
2: Writeln('Ашхабат');
3: Writeln('Сиул');
4: Writeln('Пампея');
else
Writeln('В списке всего 4 города!');
end;
Readln;
end.

Вверх

Вариант№15
15. Ввести номер недели. Вывести количество в этот день.

Program lab2v15;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер дня недели');
Readln(i);
case i of
1: Writeln('-----');
2: Writeln('-----');
3: Writeln('-----');
4: Writeln('-----');
else
Writeln('В списке всего 4 дня недели!');
end;
Readln;
end.

Вверх

Вариант№16
16. Есть данные про 6 товаров. Вывести числовой код
одного из них, получить цену.

Program lab2v16;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('‚Введите ');
Readln(i);
case i of
1: Writeln('Числовой код:1123, цена:121р.');
2: Writeln('Числовой код:4565, цена:121р.');
3: Writeln('Числовой код:7854, цена:121р.');
4: Writeln('Числовой код:5654, цена:121р.');
5: Writeln('Числовой код:1045, цена:121р.');
6: Writeln('Числовой код:0023, цена:121р.');
else
Writeln('В списке всего 6 товаров!');
end;
Readln;
end.

Вверх

Вариант№17
17. Ввести номер месяца Вывести количество
дней в этом месяце.
Program lab2v17;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер месяца');
Readln(i);
case i of
1: Writeln('31');
2: Writeln('28');
3: Writeln('31');
4: Writeln('30');
5: Writeln('31');
6: Writeln('30');
else
Writeln('В списке всего 6 месяцев');
end;
Readln;
end.

Вверх

Вариант№18
18. Ввести числовой код группы. Вывести количество
студентов..
Program lab2v18;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите числовой код группы');
Readln(i);
case i of
1: Writeln('31 чел.');
2: Writeln('28 чел.');
3: Writeln('31 чел.');
4: Writeln('30 чел.');
5: Writeln('31 чел.');
6: Writeln('30 чел.');
else
Writeln('В списке всего 6 числовых кодов!');
end;
Readln;
end.

Вверх

Вариант№19
19. Ввести число в диапазоне от 0 до 5. Вывести название
этого числа на английском языке.
Program lab2v19;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите число от 0 до 5');
Readln(i);
case i of
0: Writeln('zero');
1: Writeln('one');
2: Writeln('two');
3: Writeln('three');
4: Writeln('four');
5: Writeln('five');
else
Writeln('В диапазоне всего 6 цифр!');
end;
Readln;
end.

Вверх

Вариант№20
20. Ввести номер поезда. Вывести справку
про час его отправления.
Program lab2v20;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер поезда');
Readln(i);
case i of
1: Writeln('12.00');
2: Writeln('16.00');
3: Writeln('15.00');
4: Writeln('20.00');
5: Writeln('23.00');
else
Writeln('В списке всего 5 поездов!');
end;
Readln;
end.

Вверх

Вариант№21
21. Ввести 1 букву названия речки. Вывести справку
про ее длину.
Program lab2v21;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите название речки');
Readln(i);
case i of
1: Writeln('1200км');
2: Writeln('1600км');
3: Writeln('1500км');
4: Writeln('2000км');
5: Writeln('2300км');
else
Writeln('В списке всего 5 речек!');
end;
Readln;
end.

Вверх

Вариант№22
22. Ввести числовой код созвездия. Вывести количество
звезд в нем.
Program lab2v22;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите числовой код созвездия');
Readln(i);
case i of
1: Writeln('1200');
2: Writeln('1600');
3: Writeln('1500');
4: Writeln('2000');
5: Writeln('2300');
else
Writeln('В списке всего 5 созвездий!');
end;
Readln;
end.

Вверх

Вариант№23
23. Ввести номер телефона одного из 4 друзей.
Вывести его имя.
Program lab2v23;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер телефона друга');
Readln(i);
case i of
1: Writeln('Ваня');
2: Writeln('Петя');
3: Writeln('Саша');
4: Writeln('Вася');
else
Writeln('В списке всего 4 друга!');
end;
Readln;
end.

Вверх

Вариант№24
24. Ввести номер квартиры в доме. Вывести количество,
проживающих в этой квартире.
Program lab2v24;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите номер квартиры');
Readln(i);
case i of
1: Writeln('3');
2: Writeln('2');
3: Writeln('5');
4: Writeln('4');
else
Writeln('В списке всего 4 квартары!');
end;
Readln;
end.

Вверх

Вариант№25
25. Ввести число в диапазоне 5..9.
Вывести его название словом.

Program lab2v25;
Uses crt;
var i:integer;
Begin
Clrscr;
Writeln('Введите число от 5 до 9');
Readln(i);
case i of
6: Writeln('Шесть');
7: Writeln('Семь');
8: Writeln('Восемь');
9: Writeln('Девять');
5: Writeln('Пять');
else
Writeln('диапазон от 5 до 9!');
end;
Readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№3

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24 Вариант№25

Вариант№1
1. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 драхм=1.77185 г.=0.06249 унций.

Program lab3v1;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'драхм','=',i*1.77185:2:5,'г.','=',i*0.06249:2:5,'унций');
Readln;
end.

Вверх

Вариант№2
2. Построить таблицу соотношения мер.
Начальное значение мер, шаг изменения
и количество рядов в таблице (10-15) задать
самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 карат=0.2 г.=2.9412 гран.

Program lab3v2;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'карат','=',i*0.2:2:5,'г.','=',i*2.9412:2:5,'гран.');
Readln;
end.

Вверх

Вариант№3
3. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 пайп=54.18 пек=477.33 л.

Program lab3v3;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'пайп','=',i*54.18:2:5,'пек','=',i*477.33:2:5,'л');
Readln;
end.

Вверх

Вариант№4
4. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 галон(брит.)=1.2 галон(США)=4.546 л.

Program lab3v4;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'галон(брит)','=',i*1.2:2:5,'галон(США)','=',i*4.546:2:5,'л');
Readln;
end.

Вверх

Вариант№5
5. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 галон(США)=0.0347 сак=3.785 л.

Program lab3v5;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'галон(США)','=',i*0.0347:2:5,'сак','=',i*3.785:2:5,'л.');
Readln;
end.

Вверх

Вариант№6
6. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 чарка=0.0568 л.=0.00012 пайпа.
Program lab3v6;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'чарка','=',i*0.0568:2:5,'л.','=',i*0.00012:2:5,'пайпа.');
Readln;
end.

Вверх

Вариант№7
7. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 квартет=291 л.=5123.24 чарок.

Program lab3v7;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'квартет','=',i*291:5,'л.','=',i*5123.24:2:5,'чарок');
Readln;
end.

Вверх

Вариант№8
8. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 страйк= 72.73 л.=1280.46 чарок.
Program lab3v8;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'страйк','=',i*72.73:2:5,'л.','=',i*1280.46:2:5,'чарок');
Readln;
end.

Вверх

Вариант№9
9. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 челдрон=1.309 л.=0.149 пека.
Program lab3v9;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'челдрон','=',i*1.309:2:5,'л.','=',i*0.149:2:5,'пека');
Readln;
end.

Вверх

Вариант№10
10. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 сак=109 л.=1.499 страйка.
Program lab3v10;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'сак','=',i*109:5,'л.','=',i*1.499:2:5,'страйка');
Readln;
end.

Вверх

Вариант№11
11. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 пек=8.81 л.=0.07929 сака
Program lab3v11;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'пек','=',i*8.81:2:5,'л.','=',i*0.07929:2:5,'сака');
Readln;
end.

Вверх

Вариант№12
12. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 корд малый=3.624 куб.м=128 куб.фунтов.
Program lab3v12;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'корд малый','=',i*3.624:2:5,'куб.м','=',i*128:5,'куб.футов');
Readln;
end.

Вверх

Вариант№13
13. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 стандарт=4.672 куб.м=0.165 рода.

Program lab3v13;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'стандарт','=',i*4.762:2:5,'куб.м','=',i*0.165:2:5,'рода');
Readln;
end.

Вверх

Вариант№14
14. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 род=28.3 куб.м=1000 куб.фунтов.

Program lab3v14;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'род','=',i*28.3:2:5,'куб.м','=',i*1000:5,'куб.фунтов');
Readln;
end.

Вверх

Вариант№15
15. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 чейн=30.48 м=100 фунтов.
Program lab3v15;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'чейн','=',i*30.48:2:5,'м','=',i*100:5,'фунтов');
Readln;
end.

Вверх

Вариант№16
16. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 фингер=11.4 см=4.5 дюймов.
Program lab3v16;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'фингер','=',i*11.4:2:5,'см','=',i*4.5:2:5,'дюймов');
Readln;
end.

Вверх

Вариант№17
17. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 нейл=5.7 см=2.25 дюйм.

Program lab3v17;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'нейл','=',i*5.7:2:5,'см','=',i*2.25:2:5,'дюйм');
Readln;
end.

Вверх

Вариант№18
18. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 фут=0.3048 м=12 дюймов.
Program lab3v18;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'фут','=',i*0.3048:2:5,'м','=',i*12:5,'дюймов');
Readln;
end.

Вверх

Вариант№19
19. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 орд=0.9144 м=3 фут.
Program lab3v19;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'орд','=',i*0.9144:2:5,'м','=',i*3:5,'фут');
Readln;
end.

Вверх

Вариант№20
20. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 кабель Брит.=0.183 км=680 фут.
Program lab3v20;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'кабель(Брит)','=',i*0.183:2:5,'км','=',i*680:5,'фут');
Readln;
end.

Вверх

Вариант№21
21. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 кабель США=219.5 м=720 фут.
Program lab3v21;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'кабель(США)','=',i*219.5:2:5,'м','=',i*720:5,'фут');
Readln;
end.

Вверх

Вариант№22
22. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 дюйм=2.54 см=12 линий.
Program lab3v22;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'дюйм','=',i*2.54:2:5,'см','=',i*12:5,'линий');
Readln;
end.

Вверх

Вариант№23
23. Построить таблицу соотношения мер. Начальное значение мер, шаг изменения
и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 морская миля=1.852 км=6076 фут.
Program lab3v23;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'морская миля','=',i*1.852:2:5,'км','=',i*6076:5,'фут');
Readln;
end.

Вверх

Вариант№24
24. Построить таблицу соотношения мер. Начальное значение мер, шаг изменения
и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода. 1 унция=28.353495 г.=142 карат.
Program lab3v24;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'унция','=',i*28.353495:2:5,'г.','=',i*142:5,'карат');
Readln;
end.

Вверх

Вариант№25
25. Построить таблицу соотношения мер. Начальное значение мер,
шаг изменения и количество рядов в таблице (10-15)
задать самостоятельно в режиме диалога.
Оформить таблицу в формате вывода.
1 ярд=0.9144 м=3 фут.

Program lab3v25;
Uses crt;
Var n,i:integer;
Begin
Clrscr;
Writeln('Введите колличество рядов в таблице');
Readln(n);
for i:=1 to n do
Writeln(i*1,'ярд','=',i*0.9144:2:5,'м','=',i*3:5,'фут');
Readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№7

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24 Вариант№25

Вариант№1
1. Вывести имя и количество букв в третьем слове.
program stroki_1;
uses crt;
var s,f,u:string;i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(u);
k:=length(s);
writeln(k);
readln;
end.

Вверх

Вариант№2

2. Вывести количество букв "а" в фамилии.
program stroki_2;
uses crt;
var s,f,u,r:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to i1 do begin
r:=copy(f,i,1);
if r='а' then h:=h+1
end;
writeln(h);
readln;
end.

Вверх

Вариант№3

3. Вывести три буквы - свои инициалы с точками

program stroki_3;
uses crt;
var s,f,u:string;i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(copy(f,1,1),'.',copy(u,1,1),'.',copy(s,1,1));
readln;
end.

Вверх

Вариант№4

4. Вывести длину фамилии и имени.

program stroki_4;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
k:=length(f);
r:=length(u);
writeln(k);
writeln(r);
readln;
end.

Вверх

Вариант№5

5. Вывести фамилию и инициалы.
program stroki_5;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
write(f);
writeln(copy(f,1,1),' ',copy(u,1,1),' ',copy(s,1,1));
readln;
end.

Вверх

Вариант№6

6. Вывести имя и количество букв в фамилии.

program stroki_6;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(u);
writeln(length(f));
readln;
end.

Вверх

Вариант№7

7. Вывести количество букв "о" в фамилии.

program stroki_7;
uses crt;
var s,f,u,r:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to i2 do begin
r:=copy(u,i,1);
if r='o' then h:=h+1
end;
writeln(h);
readln;
end.

Вверх

Вариант№8

8. Вывести самое длинное слово среди них.

program stroki_8;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
if (length(f)>=length(u)) and (length(f)>=length(s)) then writeln(f);
if (length(u)>=length(f)) and (length(u)>=length(s)) then writeln(u);
if (length(s)>=length(u)) and (length(s)>=length(f)) then writeln(s);
readln;
end.

Вверх

Вариант№9

9. Убрать все буквы "а" и "о" из фамилии.

program stroki_9;
uses crt;
var s,f,u,r:string;j,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to length(f) do begin
if f[i]='о' then delete(f,i,1);
end;
for j:=1 to length(f) do begin
if f[j]='а' then delete(f,j,1);
end;
writeln(f);
readln;
end.

Вверх

Вариант№10

10. Вывести имя в столбик.

program stroki_10;
uses crt;
var s,f,u,r:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to i2 do begin
writeln(u[i]);
end;
readln;
end.

Вверх

Вариант№11

11. Определить есть ли слова, Начинающиеся с буквы "М".
program stroki_11;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
if copy(f,1,1)='м' then writeln(f);
if copy(u,1,1)='м' then writeln(u);
if copy(s,1,1)='м' then writeln(s);
readln;
end.

Вверх

Вариант№12

12. Все буквы "И" продублировать.

program stroki_12;
uses crt;
var s,s2:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
for i:=1 to length(s) do
begin
if s[i]='и' then s2:=s2+s[i]+s[i]
else s2:=s2+s[i];
end;
writeln(s2);
readln;
end.

Вверх

Вариант№13

13. Вывести фамилию и количество букв в имени

program stroki_13;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(f);
writeln(length(u));
readln;
end.

Вверх

Вариант№14

14. Вывести имя в обратном порядке.

program stroki_14;
uses crt;
var s,f,u,k:string;i1,i2,i,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
r:=length(u);
for i:=r downto 1 do begin
k:=k+u[i];
end;
writeln(k);
readln;
end.

Вверх

Вариант№15

15. Вывести фамилию в столбик.

program stroki_15;
uses crt;
var s,f,u,r:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to i1 do begin
writeln(f[i]);
end;
readln;
end.

Вверх

Вариант№16

16. Вывести имя, отчество и количество букв в имени

program stroki_16;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(u);
writeln(s);
writeln(length(u));
readln;
end.

Вверх

Вариант№17

17. Вывести самое короткое слово.
program stroki_8;
uses crt;
var s,f,u:string;i1,i2,k,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
if (length(f)<=length(u)) and (length(f)<=length(s)) then writeln(f);
if (length(u)<=length(f)) and (length(u)<=length(s)) then writeln(u);
if (length(s)<=length(u)) and (length(s)<=length(f)) then writeln(s);
readln;
end.

Вверх

Вариант№18

18. вывести данные без пробелов. Сколько букв в имени?

program stroki_18;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(f,u,s);
writeln(length(u));
readln;
end.

Вверх

Вариант№19

19. Вывести длину трёх слов.

program stroki_19;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(length(f)+length(u)+length(s));
writeln(length(f));
writeln(length(u));
writeln(length(s));
readln;
end.

Вверх

Вариант№20

20. Вывести имя и количество букв в фамилии.
program stroki_20;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(u);
writeln(length(f));
readln;
end.

Вверх

Вариант№21

21. Вывести фамилию.

program stroki_21;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(u);
writeln(f);
readln;
end.

Вверх

Вариант№22

22. Каждую букву продублировать.

program stroki_22;
uses crt;
var s,u2,u,f:string;h,i,i1,i2,k:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to length(u) do
begin
u2:=u2+u[i]+u[i];
end;
writeln(u2);
readln;
end.

Вверх

Вариант№23

23. Вывести фамилию в обратном порядке.
program stroki_23;
uses crt;
var s,f,u,k:string;i1,i2,i,r:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
r:=length(f);
for i:=r downto 1 do begin
k:=k+f[i];
end;
writeln(k);
readln;
end.

Вверх

Вариант№24

24. Вывести количество букв "А" и "Б" в фамилии.

program stroki_24;
uses crt;
var s,f,u,r:string;h,i,i1,i2,k,h1:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
for i:=1 to i1 do begin
r:=copy(f,i,1);
if r='а' then h:=h+1;
if r='б' then h:=h+1;
end;
writeln(h);
readln;
end.

Вверх

Вариант№25

25. Вывести третье слово и количество букв в фамилии.

program stroki_21;
uses crt;
var s,f,u,r:string;i1,i2,k,i:integer;
begin
clrscr;
writeln('введите ФИО');
readln(s);
i1:=pos(' ',s);
f:=copy(s,1,i1-1);
delete(s,1,i1);
i2:=pos(' ',s);
u:=copy(s,1,i2-1);
delete(s,1,i2);
writeln(s);
writeln(length(f));
readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№8

Придумать и описать структуру записи и составить программу для создания массива из трёх-четырёх записей и обработать данные, согласно сюжета, в котором задать и описать критерии поиска необходимой информации. Результат работы программы вывести на экран. Пример сюжета: создать и вывести на экран массив записей про автомобили на складе (название модели, год выпуска, цена, цвет), а так же найти в массиве и вывести на экран название моделей красного цвета, которые выпускаются с 2001 года. Создать и вывести на экран массив записей про:

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24

Вариант№1
1. Студенты
PROGRAM zapis_1;
uses crt;
const n=5;
type stydent=record
fio:string [15];
nomer,ocenka:integer;
end;
var a1:array [1..n] of stydent;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('порядковый номер ');readln(nomer);
write('ФИО ');readln(fio);
write('оценки за семестр ');readln(ocenka);
readln;
end;
writeln;
writeln('оценка за симестр');
for i:=1 to n do
with a1[i] do
writeln(nomer:2,fio:10,' : ',ocenka);
writeln;
writeln('ввывести отличников');
for i:=1 to n do
with a1[i] do
if ocenka=5 then writeln(fio:10);
readln;
end.

Вверх

Вариант№2

2. Адреса друзей.
PROGRAM zapis_2;
uses crt;
const n=5;
type stydent=record
fio,ylica:string [15];
nomer,dom:integer;
end;
var a1:array [1..n] of stydent;
i:integer;y:boolean;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('порядковый номер ');readln(nomer);
write('ФИО ');readln(fio);
write('улица ');readln(ylica);
write('№ дома ');readln(dom);
readln;
end;
writeln;
writeln('АДРЕСА ДРУЗЕЙ');
for i:=1 to n do
with a1[i] do
writeln(nomer:2,fio:10,' ',ylica,' Д',dom);
writeln;
writeln('ввывести тех,кто живёт в домах,№ которых < 4');
for i:=1 to n do
with a1[i] do
if dom<4 then writeln(fio:10);
readln;
end.

Вверх

Вариант№3

3. Телефоны знакомых

PROGRAM zapis_3;
uses crt;
const n=5;
type stydent=record
fio:string [15];
nomer,tel:word;
end;
var a1:array [1..n] of stydent;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('порядковый номер ');readln(nomer);
write('ФИО ');readln(fio);
write('телефон ');readln(tel);
readln;
end;
writeln;
writeln('ТЕЛЕФОНЫ ЗНАКОМЫХ');
for i:=1 to n do
with a1[i] do
writeln(nomer:2,fio:10,' : ',tel:10);
writeln;
writeln('ввывести тех,у кого телефон начинается с тройки');
for i:=1 to n do
with a1[i] do
if (tel>30000) and (tel<39999) then writeln(fio:10);
readln;
end.

Вверх

Вариант№4

4. Журналы.

PROGRAM zapis_4;
uses crt;
const n=5;
type gyrnal=record
imia:string [15];
cena:word;god:integer;
end;
var a1:array [1..n] of gyrnal;
i,g:integer;
begin
clrscr;
writeln('введите нужный год журнала');readln(g);
for i:=1 to n do
with a1[i] do
begin
write('название журнала ');readln(imia);
write('год выпуска ');readln(god);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,god:8,' $ ',cena:5);
writeln;
writeln('ввывести журналы ',g,' года');
for i:=1 to n do
with a1[i] do
if god=g then writeln(imia:10,' $ ',cena:5);
readln;
end.

Вверх

Вариант№5

5. Характеристики автомобилей.

PROGRAM zapis_5;
uses crt;
const n=5;
type auto=record
marka,cvet:string [15];
cena:integer;
end;
var a1:array [1..n] of auto;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('марка автомобиля ');readln(marka);
write('цвет ');readln(cvet);
write('цена ');readln(cena);
readln;
end;
writeln; writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(marka:10,cvet:10,' $ ',cena:10);
writeln;
writeln('ввывести марки тех автомобилей,цена которых больше $2000');
for i:=1 to n do
with a1[i] do
if cena>2000 then writeln(marka:10,cvet:10);
readln;
end.

Вверх

Вариант№6

6. Характеристики аудиотехники

PROGRAM zapis_6;
uses crt;
const n=5;
type audio=record
audiotexnika:string [15];
cena:word;ceria:integer;
end;
var a1:array [1..n] of audio;
i:integer;
begin
clrscr; for i:=1 to n do
with a1[i] do
begin
write('наименование аудиотехники ');readln(audiotexnika);
write('серия№ ');readln(ceria);
write('цена ');readln(cena);
readln;
end;
writeln; writeln('В магазине имеются следующая аудиотехника:');
for i:=1 to n do
with a1[i] do
writeln(audiotexnika:10,ceria:8,' $ ',cena:5);
writeln;
writeln('ввывести наименования аудиотехники,стоимость которых меньше $4000');
for i:=1 to n do
with a1[i] do
if cena<4000 then writeln(audiotexnika:10,cena:5);
readln;
end.

Вверх

Вариант№7

7. Цветы.
PROGRAM zapis_7;
uses crt;
const n=5;
type cvetok=record
imia,cvet:string [15];
cena:word;
end;
var a1:array [1..n] of cvetok;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название цветка ');readln(imia);
write('цвет ');readln(cvet);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,cvet:8,' $ ',cena:5);
writeln;
writeln('ввывести названия синих цветов');
for i:=1 to n do
with a1[i] do
if cvet='синий' then writeln(imia:10,' $ ',cena:5);
readln;
end.

Вверх

Вариант№8

8. Животные.

PROGRAM zapis_8;
uses crt;
const n=5;
type animal=record
imia,tip:string [15];
let:byte;
end;
var a1:array [1..n] of animal;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название животного ');readln(imia);
write('вид по класификации ');readln(tip);
write('возраст ');readln(let);
readln;
end;
writeln;
writeln('В ЗООпарке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,tip:10,' - ',let:2);
writeln;
writeln('ввывести ХИЩНИКОВ');
for i:=1 to n do
with a1[i] do
if tip='хищник' then writeln(imia:10);
readln;
end.

Вверх

Вариант№9

9.Птицы.

PROGRAM zapis_9;
uses crt;
const n=5;
type bead=record
imia,tip:string [15];
let:byte;
end;
var a1:array [1..n] of bead;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название птицы ');readln(imia);
write('литает?(да/нет) ');readln(tip);
write('возраст ');readln(let);
readln;
end;
writeln;
writeln('В ЗООпарке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,tip:10,' - ',let:2);
writeln;
writeln('ввывести НЕлетающих');
for i:=1 to n do
with a1[i] do
if tip='нет' then writeln(imia:10);
readln;
end.

Вверх

Вариант№10

10. Одежда.
PROGRAM zapis_10;
uses crt;
const n=5;
type ODEGDA=record
imia,firma:string [15];
cena:word;
end;
var a1:array [1..n] of odegda;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название одежды ');readln(imia);
write('название фирмы ');readln(firma);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,firma:10,' $ ',cena:5);
writeln;
writeln('ввывести одежду дешевле $100');
for i:=1 to n do
with a1[i] do
if cena<100 then writeln(imia:10);
readln;
end.

Вверх

Вариант№11

11. Обувь.
PROGRAM zapis_11;
uses crt;
const n=5;
type Obyv=record
imia,firma:string [15];
cena:word;
end;
var a1:array [1..n] of obyv;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do begin write('название обуви ');readln(imia);
write('название фирмы ');readln(firma);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,firma:10,' $ ',cena:5);
writeln; writeln('ввывести одежду дороже $100');
for i:=1 to n do
with a1[i] do
if cena>100 then writeln(imia:10);
readln;
end.

Вверх

Вариант№12

12. Продукты.
PROGRAM zapis_12;
uses crt;
const n=5;
type prod=record
imia:string [15];
cena,kol:word;
end;
var a1:array [1..n] of prod;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('наименование продукта ');readln(imia);
write('нужное количество ');readln(kol);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,kol:5,' $ ',cena:5);
writeln;
writeln('ввывести продукт не дороже $100');
for i:=1 to n do
with a1[i] do
if cena<=100 then writeln(imia:10);
readln;
end.

Вверх

Вариант№13

13. Моющие средства.

PROGRAM zapis_13;
uses crt;
const n=5;
type mc=record
imia:string [15];
cena,kol:word;
end;
var a1:array [1..n] of mc;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('наименование продукта ');readln(imia);
write('нужное количество ');readln(kol);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,kol:5,' $ ',cena:5);
writeln;
writeln('ввывести моющие средства не дешевле $100');
for i:=1 to n do
with a1[i] do
if cena>=100 then writeln(imia:10);
readln;
end.

Вверх

Вариант№14

14. Сантехника.
PROGRAM zapis_14;
uses crt;
const n=5;
type ct=record
imia,mi:string [15];
cena:word;
end;
var a1:array [1..n] of ct;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название сантехника ');readln(imia);
write('материал изготовления ');readln(mi);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,mi:8,' $ ',cena:5);
writeln;
writeln('ввывести сантехнику из керамики');
for i:=1 to n do
with a1[i] do
if mi='керамика' then writeln(imia:10);
readln;
end.

Вверх

Вариант№15

15. Самолёты
PROGRAM zapis_15;
uses crt;
const n=5;
type cm=record
imia:string [15];
cena,gruz:word;
end;
var a1:array [1..n] of cm;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название самолёта ');readln(imia);
write('грузоподъёмность ');readln(gruz);
write('цена ');readln(cena);
readln;
end;
writeln;
writeln('На заводе имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,gruz:8,' $ ',cena:5);
writeln;
writeln('ввывести самолёты с грузоподъёмностью свыше 10 тонн');
for i:=1 to n do
with a1[i] do
if gruz>10 then writeln(imia:10);
readln;
end.

Вверх

Вариант№16

16. Моря.

PROGRAM zapis_16;
uses crt;
const n=5;
type reki=record
imia:string [15];
l,sh:integer;
end;
var a1:array [1..n] of reki;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название реки ');readln(imia);
write('длина ');readln(l);
write('ширина ');readln(sh);
readln;
end;
writeln;
writeln('На заводе имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,l:8,' /',sh:8);
writeln;
writeln('ввывести реки,длина которых от 100км до 500 ');
for i:=1 to n do
with a1[i] do
if (l>100) and (l<500) then writeln(imia:10);
readln;
end.

Вверх

Вариант№17

17. Горы
PROGRAM zapis_17;
uses crt;
const n=5;
type mor=record
imia:string [15];
l,sh:integer;
end;
var a1:array [1..n] of mor;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название моря ');readln(imia);
write('глубина ');readln(l);
write('площадь ');readln(sh);
readln;
end;
writeln;
writeln('В списке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,l:8,' /',sh:8);
writeln;
writeln('ввывести моря,глубина которых больше 100км,а площадь меньше 1000км');
for i:=1 to n do
with a1[i] do
if (l>100) and (sh<1000) then writeln(imia:10);
readln;
end.

Вверх

Вариант№18

18. Фрукты.

PROGRAM zapis_18;
uses crt;
const n=5;
type gor=record
imia:string [15];
l,sh:integer;
end;
var a1:array [1..n] of gor;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название горы ');readln(imia);
write('длина ');readln(l);
write('высота ');readln(sh);
readln;
end;
writeln;
writeln('В списке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,l:8,' /',sh:8);
writeln;
writeln('ввывести гору,у котрой длина равна высоте');
for i:=1 to n do
with a1[i] do
if l=sh then writeln(imia:10);
readln;
end.

Вверх

Вариант№19

19. Овощи.

PROGRAM zapis_19;
uses crt;
const n=5;
type fr=record
imia,c:string [15];
sh:word;
end;
var a1:array [1..n] of fr;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название фрукта ');readln(imia);
write('цвет ');readln(c);
write('цена ');readln(sh);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,c:8,' p. ',sh:8);
writeln;
writeln('ввывести зелёные фрукты');
for i:=1 to n do
with a1[i] do
if c='зелёный' then writeln(imia:10);
readln;
end.

Вверх

Вариант№20

20. Деревья.
PROGRAM zapis_20;
uses crt;
const n=5;
type ov=record
imia,c:string [15];
sh:word;
end;
var a1:array [1..n] of ov;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название овоща ');readln(imia);
write('цвет ');readln(c);
write('цена ');readln(sh);
readln;
end;
writeln;
writeln('В магазине имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,c:8,' p. ',sh:8);
writeln;
writeln('ввывести овощи,цена которых не привыает 50р.');
for i:=1 to n do
with a1[i] do
if sh<50 then writeln(imia:10);
readln;
end.

Вверх

Вариант№21

21. Созвездия

PROGRAM zapis_21;
uses crt;
const n=5;
type der=record
imia:string [15];
woz,v:word;
end;
var a1:array [1..n] of der;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название дерево ');readln(imia);
write('высота ');readln(v);
write('возраст ');readln(woz);
readln;
end;
writeln;
writeln('В парке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,v:8,' - ',woz:8);
writeln;
writeln('ввывести дерево,которому свыше ста лет');
for i:=1 to n do
with a1[i] do
if woz>100 then writeln(imia:10);
readln;
end.

Вверх

Вариант№22

22. Страны

PROGRAM zapis_22;
uses crt;
const n=5;
type s=record
imia:string [15];
v,woz:word;
end;
var a1:array [1..n] of s;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название созвездия ');readln(imia);
write('количество звёзд ');readln(v);
write('площадь ');readln(woz);
readln;
end;
writeln;
writeln('В списке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,v:8,' - ',woz:8);
writeln;
writeln('ввывести созвездия,в которых более 20 звёзд');
for i:=1 to n do
with a1[i] do
if v>20 then writeln(imia:10);
readln;
end.

Вверх

Вариант№23

23. Города
PROGRAM zapis_23;
uses crt;
const n=5;
type s=record
imia:string [15];
v,woz:word;
end;
var a1:array [1..n] of s;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название страны ');readln(imia);
write('количество населения ');readln(v);
write('площадь ');readln(woz);
readln;
end;
writeln;
writeln('В списке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,v:8,' - ',woz:8);
writeln;
writeln('ввывести страну с населением не мене 120 млн/ч');
for i:=1 to n do
with a1[i] do
if v>120 then writeln(imia:10);
readln;
end.

Вверх

Вариант№24

24. Косметические средства

PROGRAM zapis_24;
uses crt;
const n=5;
type s=record
imia:string [15];
v,woz:word;
end;
var a1:array [1..n] of s;
i:integer;
begin
clrscr;
for i:=1 to n do
with a1[i] do
begin
write('название города ');readln(imia);
write('количество населения ');readln(v);
write('площадь ');readln(woz);
readln;
end;
writeln;
writeln('В списке имеются:');
for i:=1 to n do
with a1[i] do
writeln(imia:10,v:8,' - ',woz:8);
writeln;
writeln('ввывести город площадью более 70квкм');
for i:=1 to n do
with a1[i] do
if v>70 then writeln(imia:10);
readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№9

Придумать список объектов, например название товаров в магазине; виды полезных ископаемых; фамилии студентов, которые могут принимать участие в работах разных кружков. Составить пять множеств:

Вариант№1 Вариант№2 Вариант№3 Вариант№4 Вариант№5 Вариант№6 Вариант№7 Вариант№8 Вариант№9 Вариант№10 Вариант№11 Вариант№12 Вариант№13 Вариант№14 Вариант№15 Вариант№16 Вариант№17 Вариант№18 Вариант№19 Вариант№20 Вариант№21 Вариант№22 Вариант№23 Вариант№24 Вариант№25

Вариант№1
1. Есть в первом множестве, но нет в третьем.
НЕту

Вверх

Вариант№2

2. Принадлежит первому и третьему множествам
program mnogestva_2;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r3,r6,r2,r9,r4,r5];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r8,r5];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a+c then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№3

3. Есть только в первом множестве.

program mnogestva_3;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r9,r4,r5,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r4,r6];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a-(b+c+d+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№4

4. Входит в первое и третье , не входит во второе.

program mnogestva_4;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r9,r4,r5,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r4,r6];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a+c-b then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№5

5. Входит в первое, второе и третье одновременно.
program mnogestva_5;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r4,r6];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a*b*c then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№6

6. Входят во второе и третье.

program mnogestva_6;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r4,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (b+c)-(a+d+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№7

7. Есть во втором, но нет в четвёртом.

program mnogestva_7;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r9,r2,r6,r1];
e:set of tovar=[r4,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in b-d then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№8

8. Есть лишь во втором множестве.

program mnogestva_8;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r4,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in b-(a+c+d+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№9

9. Входят в первое и третье , но не входит в пятое.

program mnogestva_9;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r1,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r4,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a+c-e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№10

10. Входят во второе , третье и пятое одновременно.

program mnogestva_10;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in b*c*e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№11

11. Входят во втором и пятое множество.
program mnogestva_11;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (b+e)-(a+c+d) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№12

12. Есть в третьем ,но нет в пятом.

program mnogestva_12;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in c-e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№13

13. Принадлежит лишь третьему.

program mnogestva_13;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in c-(a+b+d+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№14

14. Входят в первое, и четвёртое, но не входит в третье
program mnogestva_14;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (a+d)-e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№15

15. Входит в первое, третье и четвёртое одновременно.

program mnogestva_15;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a*c*d then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№16

16. Входят во второе и четвёртое множество.

program mnogestva_16;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (b+d)-(a+c+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№17

17. Есть в пятом, но нет в третьем.
program mnogestva_17;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in e-c then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№18

18. Есть лишь в четвертом.

program mnogestva_18;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in d-(a+b+c+e) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№19

19. Входят в третье и пятое ,но не входят в четвёртое.

program mnogestva_19;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (c+e)-d then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№20

20. Входят во второе, четвёртое и пятое одновременно.
program mnogestva_20;
uses crt; type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r7,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3]; var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in b*d*e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№21

21. Принадлежит третьему и пятому множеству.

program mnogestva_21;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r2,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (c+e)-(a+b+d) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№22

22. Есть лишь в первом , но нет во втором.

program mnogestva_22;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r8,r6,r2,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r5,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in a-b then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№23

23. Есть лишь в пятом множестве.
program mnogestva_23;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r4,r6,r2,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r8,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in e-(a+b+c+d) then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№24

24. Входит в первое и пятое , но не входит во второе.

program mnogestva_24;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r4,r6,r2,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r8,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in (a+e)-b then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');
8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх

Вариант№25

25. Входят в третье, четвёртое и пятое одновременно.

program mnogestva_25;
uses crt;
type tovar=(r1,r2,r3,r4,r5,r6,r7,r8,r9);
const a:set of tovar=[r4,r6,r2,r1];
b:set of tovar=[r4,r5,r9,r2];
c:set of tovar=[r7,r5,r2,r1];
d:set of tovar=[r3,r2,r6,r1];
e:set of tovar=[r8,r6,r3];
var t:tovar;
begin
clrscr;
writeln('В магазине имеются:');
for t:=r1 to r9 do
if t in c*d*e then
case ord(t)+1 of
1:writeln('виноград');
2:writeln('груши');
3:writeln('бананы');
4:writeln('лимоны');
5:writeln('апельсины');
6:writeln('абрикосы');
7:writeln('яблоки');

8:writeln('мандарины');
9:writeln('персики') else writeln('таких нет');
end;
writeln;writeln('Приходите ещё!');readln;
end.

Вверх


Pasckal

Главная Учебник Тест

Лабораторная работа№10

Используя файловый тип данных, создать файл записей,
который содержит, например, информацию о машинах,
самолетах, цветах, странах и т.д.

program lpr10;
uses crt;
Type ff=file of string;
var log_f:ff; n,i:integer;
procedure zapolnenie (var f:ff);
var n,i:integer;
komps:string;
begin
Writeln('‚Введите количество компонентов в файле');
Readln(n);
Rewrite(f);
Writeln('Введите компоненты файла');

for i:=1 to n do
begin
Readln(komps);
write(f,komps);
end;
close(f);
end;
procedure vivod (var f:ff);
var komp:string;

begin
Reset(f);
while not eof(f) do
begin
Read(f,komp);
Write(komp,' ');
end;
close(f);
writeln;
end;

begin
Assign(log_f,'data.dat');
clrscr;
zapolnenie(log_f);
Writeln('Содержимое файла ');
vivod(log_f);
repeat Until Keypressed;
end.


Pasckal

Тестирование

Тест для проверки ваших знаний по Turbo Pascal

Начальный уровень

Начальный уровень Средний уровень Сложный уровень
1. Оператор условия
a) if
b) while
c) array
d) const

2. Цикл с предусловием
for
while
repeat
if

3. В какой части программы присваиваются переменные
a) while
b) begin
c) var
d) end

4. Каким оператором заканчивается программа
while
begin
var
end

5.Процедура очистки экрана
ClrScr
while
begin
end

6.С помощью какой процедуры происходит вывод данных
write
while
read
const

7. Какой тип определяется двумя значениями: true (истина) и false (ложь).
boolean
real
char
word

8. Какую арифметическую операцию выполняет DIV
Cложение
Остаток от деления
Целочисленное деление
Отрицание знака


Pasckal

Тестирование

Тест для проверки ваших знаний по Turbo Pascal

Средний уровень

Начальный уровень Средний уровень Сложный уровень
1.Процедура уничтожающая динамическую переменную
a) New
b) Dispose
c) Getmem
d) Mark

2.Какая функция осуществляет сложение строк
Copy
Pos
Concat
Lenght

3.Какая арифметическая функция возводит число в квадрат
a) Sqr
b) Sqrt
c) Abs
d) Exp

4.Как называется соотношение в которых новые значения переменных последовательно определяется по предыдущим значениям
Рекурсивными
Циклические
Рекурентными
Строковые

5.Процедура смещающая указатель файла к указанной компоненте
Read
Write
Filepos
Seec

6.Какая процедура инициирует графический режим работы адаптера
InitGraph
Restorecrtmode
ClearDevice
GraphDefault

7.Какая процедура вычерчивает многоугольник
Linerel
Feellpoly
Rectangle
Bar3D

8.Какая процедура помещают копию прямоугольного фрагмента изображения
GetMem
GetImage
PutImage
FloodFill


Pasckal

Тестирование

Тест для проверки ваших знаний по Turbo Pascal

Сложный уровень

Начальный уровень Средний уровень Сложный уровень
1.Значение упорядочивания функции
a) Хеш
b) Серия
c) Ключ
d) Дерево

2.
Copy
Pos
Concat
Lenght

3.Какая арифметическая функция возводит число в квадрат
a) Sqr
b) Sqrt
c) Abs
d) Exp

4.Как называется соотношение в которых новые значения переменных последовательно определяется по предыдущим значениям
Рекурсивными
Циклические
Рекурентными
Строковые

5.Процедура смещающая указатель файла к указанной компоненте
Read
Write
Filepos
Seec

6.Какая процедура инициирует графический режим работы адаптера
InitGraph
Restorecrtmode
ClearDevice
GraphDefault

7.Какая процедура вычерчивает многоугольник
Linerel
Feellpoly
Rectangle
Bar3D

8.Какая процедура помещают копию прямоугольного фрагмента изображения
GetMem
GetImage
PutImage
FloodFill


Program lab1v1;
Uses crt;
var r,b,c:real;
Begin
Clrscr;
Writeln('Введите радиус круга:');
Readln(r);
b:=2*3.14*r;
Writeln('Периметр круга:');
Writeln(b:4:2);
c:=2*3.14*sqr(r);
Writeln('Площадь круга:');
Writeln(c:4:2);
Readln;
end.


Program lab1v10;
Uses crt;
var r,s:longint; v:real;
Begin
Clrscr;
Writeln('Скорость света:');
Writeln('299792 км/с');
Writeln('Высота достигпутая светом через час:');
Writeln('107925120 км');
Writeln('Высота достигнутая светом через день:');
Writeln('2590202880 км');
Readln;
end.


Program lab1v11;
Uses crt;
var a,b,c,x,y,z,s:real;
Begin
Clrscr;
Writeln('Урожайность пшеницы:');
Writeln('1 сорт-36 т/га ');
Writeln('2 сорт-40 т/га ');
Writeln('3 сорт-44 т/га ');
Writeln('Введите размер 1-го поля (в га.):');
Readln(a);
Writeln('Введите размер 2-го поля (в га.):');
Readln(b);
Writeln('Введите размер 3-го поля (в га.):');
Readln(c);
x:=a*36;
y:=b*40;
z:=c*44;
s:=a+b+c;
Write('Собрали с первого поля: ');
Writeln(x:2:0);
Write('Собрали с второго поля::');
Writeln(y:2:0);
Write('Собрали с третьего поля:: ');
Writeln(z:2:0);
Writeln('_____________________');
Write('Всего с трех полей:');
Writeln(s:2:0);
Readln;
end.


Program lab1v12;
Uses crt;
var r,s,v:real;
Begin
Clrscr;
Writeln('Радиус месяца: 1740км.');
s:=4*3.14*sqr(1740);
Write('Площадь поверхности месяца:');
Writeln(s:4:2);
Write('Объем планеты:22055460480');
Readln;
end.


Program lab1v13;
Uses crt;
var a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите катет b:');
Readln(b);
c:=sqrt(sqr(a)+sqr(b));
s:=(a+b)/2;
Write('Гипотенуза:');
Writeln(c:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.


Program lab1v14;
Uses crt;
var a,s,v:real;
Begin
Clrscr;
Writeln('Введите длину ребра куба:');
Readln(a);
s:=4*sqr(a);
v:=a*a*a;
Write('Площадь бокоой поверхности куба:');
Writeln(s:2:0);
Write('Объем куба:');
Writeln(v:2:0);
Readln;
end.


Program lab1v14;
Uses crt;
var t1,t2,t3,c,a,b,e,m:real;
Begin
Clrscr;
Writeln('Введите продуктивность 1-ой трубы за час:');
Readln(t1);
Writeln('Введите продуктивность 2-ой трубы за час:');
Readln(t2);
Writeln('Введите продуктивность 3-ей трубы за час:');
Readln(t3);
Writeln('Введите колличество часов сколько будут раблтать трубы:');
Readln(c);
a:=t1*c;
b:=t2*c;
e:=t3*c;
m:=a+b+e;
Write('Продуктивность 1-ой трубы:');
Writeln(a:2:0);
Write('Продуктивность 2-ой трубы:');
Writeln(b:2:0);
Write('Продуктивность 3-ей трубы:');
Writeln(e:2:0);
writeln('___________________');
Write('Всего с трех труб:');
Writeln(m:2:0);
Readln;
end.


Program lab1v16;
Uses crt;
var r,d,a,s,p,Sk:real;
Begin
Clrscr;
Writeln('Введите площадь круга вписанного в квадрат:');
Readln(s);
r:=sqrt(s/3.14);
d:=2*r;
a:=d/(sqrt(2));
p:=4*a;
Sk:=sqr(a);
Write('Периметр квадрата описанного вокруг круга:');
Writeln(p:2:0);
Write('Площадь квадрата описанного вокруг круга:');
Writeln(Sk:2:0);
Readln;
end.


Program lab1v17;
Uses crt;
var g,t1,t2,h1,h2:real;
Begin
Clrscr;
Writeln('Введите ускорение с которым падает тело:');
Readln(g);
t1:=1;
t2:=2;
h1:=(g*sqr(t1))/2;
h2:=(g*sqr(t2))/2;
Write('Путь пройденный телом после 1-ой секунды падения:');
Writeln(h1:2:0);
Write('Путь пройденный телом после 2-ой секунды падения:');
Writeln(h2:2:0);
Readln;
end.


Program lab1v18;
Uses crt;
var p,a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите катет b:');
Readln(b);
c:=sqrt(sqr(a)+sqr(b));
s:=(a+b)/2;
p:=a+b+c;
Write('Периметр треугольника:');
Writeln(p:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.


Program lab1v19;
Uses crt;
var t1,t2,t3,c1,c2,c3,a,b,e,s:real;
Begin
Clrscr;
Writeln('Введите стоимость разговора с населенным путктом №1:');
Readln(c1);
Writeln('Введите стоимость разговора с населенным путктом №2:');
Readln(c2);
Writeln('Введите стоимость разговора с населенным путктом №3:');
Readln(c3);
Writeln('Введите время разговора с населенным пунктом №1:');
Readln(t1);
Writeln('Введите время разговора с населенным пунктом №2:');
Readln(t2);
Writeln('Введите время разговора с населенным пунктом №3:');
Readln(t3);
a:=c1*t1;
b:=c2*t2;
e:=c3*t3;
s:=a+b+e;
Write('Стоимость разговора с населенным пунктом №1:');
Writeln(a:2:0);
Write('Стоимость разговора с населенным пунктом №2:');
Writeln(b:2:0);
Write('Стоимость разговора с населенным пунктом №3:');
Writeln(e:2:0);
writeln('_________________________');
Write('Сумма за все разговоры:');
Writeln(s:2:0);
Readln;
end.


Program lab1v2;
Uses crt;
var a,b,s,p,c:real;
Begin
Clrscr;
Writeln('Введите первый катет:');
Readln(a);
Writeln('Введите второй катет:');
Readln(b);
s:=0.5*a*b;
Writeln('Площадь треугольника:');
Writeln(s:4:2);
c:=sqrt(sqr(a)+sqr(b));
p:=c+a+b;
Writeln('Периметр треугольника:');
Writeln(p:4:2);
Readln;
end.


В задании нужен угол я его заменил
на второй катет. Сделай то же с заданием!


Program lab1v20;
Uses crt;
var r,s,v,h:real;
Begin
Clrscr;
Writeln('Введите радиус основания:');
Readln(r);
Writeln('Введите высоту:');
Readln(h);
s:=2*3.14*r*h;
v:=3.14*sqr(r)*h;
Writeln('Площадь боковой поверхности:');
Writeln(s:4:2);
Writeln('Объем дуги:');
Writeln(v:1:2);
Readln;
end.


Program lab1v21;
Uses crt;
var a,s,p:real;
Begin
Clrscr;
Writeln('Введите сторону квадрата:');
Readln(a);
s:=sqr(a);
p:=4*a;
Writeln('Площадь квадрата:');
Writeln(s:4:2);
Writeln('Периметр квадрата:');
Writeln(p:1:2);
Readln;
end.


Program lab1v22;
Uses crt;
var p,a,b,c,s:real;
Begin
Clrscr;
Writeln('Введите катет а:');
Readln(a);
Writeln('Введите гипотенузу:');
Readln(c);
b:=sqrt(sqr(c)-sqr(a));
s:=(a+b)/2;
Write('Катет b:');
Writeln(b:2:0);
Write('Площадь треугольника:');
Writeln(s:2:0);
Readln;
end.


Program lab1v23;
Uses crt;
var a,d,s:real;
Begin
Clrscr;
Writeln('Введите диогональ квадрата:');
Readln(d);
a:=d/(sqrt(2));
s:=(sqr(d))/2;
Write('Сторона квадрата:');
Writeln(a:2:0);
Write('Площадь квадрата:');
Writeln(s:2:0);
Readln;
end.


Program lab1v24;
Uses crt;
var h,l,r,s,v:real;
Begin
Clrscr;
Writeln('Введите высоту конуса:');
Readln(h);
Writeln('Введите длину конуса:');
Readln(l);
Writeln('Введите радиус конуса:');
Readln(r);
v:=(3.14*sqr(r)*h)/3;
s:=3.14*r*l;
Write('Площадь конуса:');
Writeln(s:2:0);
Write('Объем конуса:');
Writeln(v:2:0);
Readln;
end.


Program lab1v25;
Uses crt;
var t1,t2,t3,v1,v2,v3,a,b,e,s:real;
Begin
Clrscr;
Writeln('Введите скорость пути №1:');
Readln(v1);
Writeln('Введите скорость пути №2:');
Readln(v2);
Writeln('Введите скорость пути №3:');
Readln(v3);
Writeln('Введите время пути №1:');
Readln(t1);
Writeln('Введите время пути №2:');
Readln(t2);
Writeln('Введите время пути №3:');
Readln(t3);
a:=v1*t1;
b:=v2*t2;
e:=v3*t3;
s:=a+b+e;
Write('Расстояние пути №1:');
Writeln(a:2:0);
Write('Расстояние пути №2:');
Writeln(b:2:0);
Write('Расстояние пути №3:');
Writeln(e:2:0);
writeln('________________');
Write('Общий путь:');
Writeln(s:2:0);
Readln;
end.


Program lab1v3;
Uses crt;
var a,b,s,p,d:real;
Begin
Clrscr;
Writeln('Введите диаметр круга:');
Readln(d);
s:=3.14*(sqr(0.5*d));
Writeln('Площадь круга:');
Writeln(s:4:2);
p:=2*3.14*(0.5*d);
Writeln('Периметр круга:');
Writeln(p:4:2);
Readln;
end.


Program lab1v4;
Uses crt;
var a,b,s,p,h,c,x:real;
Begin
Clrscr;
Writeln('Введите малое основание трапеции:');
Readln(a);
Writeln('Введиет большое основание трапеции:');
Readln(b);
Writeln('Введите боковую сторону:');
Readln(c);
x:=(b-a)/2;
h:=sqrt(sqr(c)-sqr(x));
p:=a+b+c+c;
Writeln('Периметр трапеции:');
Writeln(p:4:2);
s:=((a+b)/2)*h;
Writeln('Площадь трапеции:');
Writeln(s:4:2);
Readln;
end.


Program lab1v5;
Uses crt;
var a,b,c,d,m1,m2,m3,s:real;
Begin
Clrscr;
Writeln('масло-48.60руб. за кг.');
Writeln('сметана-12.80руб. за кг.');
Writeln('сливки- 24.60руб. за кг.');
Writeln('Введите необходимую массу масла:');
Readln(a);
Writeln('Введите необходимую массу сметаны:');
Readln(b);
Writeln('Введите необходимую массу сливок:');
Readln(c);
Writeln('Введите колличество дней:');
Readln(d);
m1:=a*48.60;
m2:=b*12.80;
m3:=c*24.60;
s:=m1+m2+m3;
Writeln('Необходимое колличество денег на каждый продукт:');
Write('Масло:');
Writeln(m1:2:2);
Write('Сметана:');
Writeln(m2:2:2);
Write('Сливки:');
Writeln(m3:2:2);
Write('Сумма:');
Writeln(s:2:2);
Readln;
end.


Program lab1v6;
Uses crt;
var m,h,s,n,g:real;
Begin
Clrscr;
m:=60;
h:=m*60;
s:=h*24;
n:=s*7;
g:=s*365;
Writeln('Колличество секунд:');
Write('в сутках:');
Writeln(s:2:0);
Write('в неделе:');
Writeln(n:2:0);
Write('в году:  ');
Writeln(g:2:0);
Readln;
end.


Program lab1v7;
Uses crt;
var m,h,v,e,p:real;
Begin
Clrscr;
Writeln('Введите массу:');
Readln(m);
Writeln('Введите высоту:');
Readln(h);
Writeln('Введите скорость:');
Readln(v);
e:=(m*sqr(v))/2;
Writeln('Кинетическая энергия:');
Writeln(e:4:2);
p:=m*9.8*h;
Writeln('Потенциальная энергия:');
Writeln(p:4:2);
Readln;
end.


Program lab1v8;
Uses crt;
var a,b,p,a2,b2,x,y:real;
Begin
Clrscr;
Writeln('Введите цену первого товара:');
Readln(a);
Writeln('Введите цену второго товара:');
Readln(b);
Writeln('Введите процент изменения цены:');
Readln(p);
x:=(a*p)/100;
a2:=a+x;
y:=(b*p)/100;
b2:=b+x;
Write('Новая цена первого товара:');
Writeln(a2);
Write('Новая цена второго товара:');
Writeln(b2);
Readln;
end.


Program lab1v9;
Uses crt;
var r,s,v:real;
Begin
Clrscr;
Writeln('Введите радиус сферы:');
Readln(r);
s:=4*3.14*sqr(r);
Writeln('Площадь поверхности сферы:');
Writeln(s:4:2);
v:=4*3.14*((sqr(r))*r);
Writeln('Объем сферы:');
Writeln(v:1:2);
Readln;
end.


program lpr10;
uses crt;
Type ff=file of string;
var log_f:ff; n,i:integer;

procedure zapolnenie (var f:ff);
var n,i:integer;
 komps:string;
 begin
  Writeln('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® Є®¬Ї®­Ґ­в ў д ©«Ґ:');
  Readln(n);
  Rewrite(f);
  Writeln('‚ўҐ¤ЁвҐ Є®¬Ї®­Ґ­вл д ©« :');

  for i:=1 to n do
    begin
  Readln(komps);
  write(f,komps);
  end;
    close(f);
 end;
 procedure vivod (var f:ff);
 var komp:string;

  begin
  Reset(f);
  while not eof(f) do
  begin
  Read(f,komp);
  Write(komp,' ');
  end;
  close(f);
  writeln;
  end;

  begin
  Assign(log_f,'data.dat');
  clrscr;
  zapolnenie(log_f);
  Writeln('‘®¤Ґа¦Ё¬®Ґ д ©« ');
  vivod(log_f);
  repeat Until Keypressed;
end.